在查询之前Null检查ObservableCollection

rem*_*rem 2 .net c# linq code-snippets

这段代码是否足够好:

if (MyCollection.Where(p => p.SomeID == idstring).Any())
{
   selectedval = MyCollection.Where(p => p.SomeID == idstring).FirstOrDefault().MyField;
}
Run Code Online (Sandbox Code Playgroud)

我怀疑的是我做了两次相同的查询:首先进行空检查,然后实际获取数据.

也许有更好的方法来做这类事情?

Adr*_*iro 6

是.

var item = MyCollection.FirstOrDefault(p => p.SomeID == idstring);
if (item != null)
    selectval = item.MyField;
Run Code Online (Sandbox Code Playgroud)

这避免了双重查询集合,这肯定会对大集合产生影响,或者如果您的集合执行数据库查询.