这对谷歌来说真的是一个很难的问题。
浏览示例代码时,我发现了一种我不理解的用法:
var orderRow = order.Rows.Single();Rows是可枚举的,通常会使用foreach循环进行迭代。对于由于某种原因不能(或不需要)使用foreach的情况,.Single是一种变通方法吗?
thx
在操作之后的这段时间里,我学到了更多关于用法的知识,这将有助于这个问题的其他命中:
var option = options.OfType<AdditionalLocationsOption>().SingleOrDefault();
if (option != null){
...stuff
}发布于 2011-01-20 09:50:32
LINQ的Single method返回集合中的单个元素。
这将是用Rows编写的,已知它只包含一行。
如果它是空的,或者它有多行,就会抛出异常。
如果您知道集合只有一个元素,则此代码比foreach循环更简单,并使其意图更清晰。
发布于 2011-01-20 10:02:44
SLaks是正确的。一个实际的例子是,如果您想要从数据库中检索具有特定ID的项,您知道您的表应该只包含具有此ID的一行(如果没有,则发生了一些不好的事情,并且应该抛出异常)。您可以执行orders.Where( x => x.ID == myID ).Single(),它将返回一个请求的订单。
SinglgeOrDefault在事情上做了一点小小的改变...如果集合中有1个以上的项,则抛出异常,但如果有0个项,则不会抛出异常。在这种情况下,它返回null或所返回类型的任何默认值
https://stackoverflow.com/questions/4742735
复制相似问题