Ben*_*ler 61 .net c# linq lambda
在搜索列表时是否有一个linq lambda搜索方法返回null,而不是抛出异常?
我目前的解决方案是这样的:(以避免被抛出异常)
if (list.Exists(x => x.Foo == Foo))
{
var listItem = list.Find(x => x.Foo == Foo);
}
Run Code Online (Sandbox Code Playgroud)
重复表达只是感觉不对.
就像是 ...
var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
......对我来说感觉更好 还是只是我?
你有更好的方法吗?(解决方案不必返回null,只是更好的解决方案是好的)
Bal*_*a R 121
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
Baz*_*zzz 43
Bala R的回答是正确的,我只是想添加一条信息:
请注意,如果List<T>包含副设计的对象不能为null,FirstOrDefault则返回的内容不是null.编译器可能会在if语句中给出警告/错误.在这种情况下,你应该像这样处理你的情况:
List<MyObjectThatCannotBeNull> list;
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (!listItem.Equals(default(MyObjectThatCannotBeNull)))
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)