这段代码是否足够好:
if (MyCollection.Where(p => p.SomeID == idstring).Any())
{
selectedval = MyCollection.Where(p => p.SomeID == idstring).FirstOrDefault().MyField;
}
我怀疑的是,我做了两次相同的查询:首先进行空检查,然后实际获取数据。
也许有更好的方法来做这类事情?
答案 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
}