linq – SingleOrDefault()在多个元素上引发异常

前端之家收集整理的这篇文章主要介绍了linq – SingleOrDefault()在多个元素上引发异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到这样的一个例外
Feature f = o.Features.SingleOrDefault(e => e.LinkName == PageLink);

因为这可以返回一个或多个元素.我可以用什么方法解决这个问题?

解决方法

Single和SingleOrDefault设计为在序列中存在更多的一个匹配时抛出.这样做的结果是,在完成之前必须重复整个序列.这听起来不像你想要的那样.尝试使用FirstOrDefault:
Feature f = o.Features
    .FirstOrDefault(e => e.vcr_LinkName == PageLink && e.bit_Activate == true);

这将(通常)表现更好,因为一旦找到匹配就完成.

当然,如果你真的要保留多个元素,那么一个Where子句会更合适:

IEnumerable<Feature> fs = o.Features
    .Where(e => e.vcr_LinkName == PageLink && e.bit_Activate == true);

猜你在找的MsSQL相关文章