首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解.Single()

理解.Single()
EN

Stack Overflow用户
提问于 2011-01-20 09:48:35
回答 2查看 112关注 0票数 3

这对谷歌来说真的是一个很难的问题。

浏览示例代码时,我发现了一种我不理解的用法:

代码语言:javascript
复制
var orderRow = order.Rows.Single();

Rows是可枚举的,通常会使用foreach循环进行迭代。对于由于某种原因不能(或不需要)使用foreach的情况,.Single是一种变通方法吗?

thx

在操作之后的这段时间里,我学到了更多关于用法的知识,这将有助于这个问题的其他命中:

代码语言:javascript
复制
var option = options.OfType<AdditionalLocationsOption>().SingleOrDefault();
if (option != null){
...stuff
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-20 09:50:32

LINQ的Single method返回集合中的单个元素。

这将是用Rows编写的,已知它只包含一行。

如果它是空的,或者它有多行,就会抛出异常。

如果您知道集合只有一个元素,则此代码比foreach循环更简单,并使其意图更清晰。

票数 7
EN

Stack Overflow用户

发布于 2011-01-20 10:02:44

SLaks是正确的。一个实际的例子是,如果您想要从数据库中检索具有特定ID的项,您知道您的表应该只包含具有此ID的一行(如果没有,则发生了一些不好的事情,并且应该抛出异常)。您可以执行orders.Where( x => x.ID == myID ).Single(),它将返回一个请求的订单。

SinglgeOrDefault在事情上做了一点小小的改变...如果集合中有1个以上的项,则抛出异常,但如果有0个项,则不会抛出异常。在这种情况下,它返回null或所返回类型的任何默认值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4742735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档