C#中LINQ的First和FirstOrDefault的区别

很多C#开发人员在做查找操作的时候喜欢用'Where'操作并通过'First'获取第一次出现的记录。这样的操作是不对的。因为'First'操作不会在 'Where'条件中起到作用。而且,这样也不能确保记录一定被找到。如果'First'在没有记录返回的操作中使用,系统会返回默认值并且没有任何异常 被抛出。

//错误的写法
List numbers = new List(){1,4,5,9,11,15,20,21,25,34,55};
return numbers.Where(x => Fibonacci.IsInFibonacciSequence(x)).First();

//部分正确的写法
return numbers.First(x => Fibonacci.IsInFibonacciSequence(x));

//正确的写法
return numbers.FirstOrDefault(x => Fibonacci.IsInFibonacciSequence(x));

posted @ 2013-01-09 10:27  ctou45  阅读(827)  评论(0编辑  收藏  举报