【发布时间】:2014-01-22 00:50:42
【问题描述】:
此代码有效:
public SiteMapping GetById(int ID)
{
var entity = siteMappings.First(p => p.Id == ID);
return entity == null ? null : entity;
}
...这也是如此(结果相同):
public SiteMapping GetById(int ID)
{
var entity = siteMappings.Find(p => p.Id == ID);
return entity == null ? null : entity;
}
是否有理由偏爱其中一个(First 或 Find)而不是另一个?
更新
所以,按照 Reed 的建议,我只需要这样:
public SiteMapping GetById(int ID)
{
return = siteMappings.FirstOrDefault(p => p.Id == ID);
}
...而且它是安全的 / 它会优雅地失败(当然,当提供正确的 ID val 时,它根本不会失败)。
【问题讨论】:
-
entity == null ? null : entity与entity相同 -
这是 LINQ to Sql 还是只是 Linq to objects
-
有关
Find()和First()..stackoverflow.com/questions/4369040/… 的更多信息,请参阅此线程,尽管这听起来像是基于意见的问题.. -
@elgonzo 如果实体为空,您的结果将始终为空。这就是@SLaks 的意义所在。因此,该调用是多余的。 '目的 ?? null' 只会执行 '??' 之后的代码如果对象为空。因此如果
object是null则返回null? -
@Nico Id 说这是那个问题的重复。