在查询之前Null检查ObservableCollection

时间:2011-06-15 16:08:41

标签: c# .net linq code-snippets

这段代码是否足够好:

if (MyCollection.Where(p => p.SomeID == idstring).Any())
{
   selectedval = MyCollection.Where(p => p.SomeID == idstring).FirstOrDefault().MyField;
}

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

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

2 个答案:

答案 0 :(得分:6)

var item = MyCollection.FirstOrDefault(p => p.SomeID == idstring);
if (item != null)
    selectval = item.MyField;

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

答案 1 :(得分:3)

有。您可以使用带有谓词的FirstOrDefault方法,如果找不到该项,则返回null。

var result = MyCollection.FirstOrDefault(p => p.SomeID == idstring);
if( result != null )
{
    // item was found
}