Find()和First()抛出exception,如何返回null?
有没有一个linq lambdasearch方法返回null,而不是抛出一个exception时,search列表?
我目前的解决scheme是这样的:(避免被抛出exception)
if (list.Exists(x => x.Foo == Foo)) { var listItem = list.Find(x => x.Foo == Foo); } 重复这个expression只是感觉不对。
就像是 …
 var listItem = list.Find(x => x.Foo == Foo); if (listItem != null) { //Do stuff } 
…对我感觉更好。 还是只是我?
你对这个有更好的方法吗? (解决scheme不必返回null,只是一个更好的解决scheme是好的)
 var listItem = list.FirstOrDefault(x => x.Foo == Foo); if (listItem != null) { //Do stuff } 
巴拉R的回答是正确的,我只是想添加一条信息:
 请注意,如果List<T>包含by-design不能为null的对象,则FirstOrDefault将返回除null其他内容。  if语句中的编译器很可能会给出警告/错误。 在这种情况下,您应该像这样处理您的情况: 
 List<MyObjectThatCannotBeNull> list; var listItem = list.FirstOrDefault(x => x.Foo == Foo); if (!listItem.Equals(default(MyObjectThatCannotBeNull))) { //Do stuff }