加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:38:43 所属栏目:MsSql教程 来源:网络整理
导读:我得到这样的一个例外 Feature f = o.Features.SingleOrDefault(e = e.LinkName == PageLink); 因为这可以返回一个或多个元素.我可以用什么方法来解决这个问题? 解决方法 Single和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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读