我有List<>
N个项目.我想得到第一个元素当且仅当N = 1.这可以使用lambda
或其他一些好的构造来完成吗?
这有效,但看起来很糟糕:
var blah = new List<Object>() { new Object() };
var item = (blah.Count == 1 ? blah[0] : null);
Run Code Online (Sandbox Code Playgroud)
有几种LINQ扩展方法.
SingleOrDefault
如果有一个元素将被返回,如果没有,default<T>
将返回,如果有多个元素将被抛出FirstOrDefault
如果有一个元素将被返回,如果没有,default<T>
将返回ElementAtOrDefault
返回给定位置的元素,或者default<T>
序列没有那么多元素所以例如(我的首选你的要求):
var item = blah.ElementAtOrDefault(0);
Run Code Online (Sandbox Code Playgroud)
满足您要求的最佳方法取决于此规则的严格程度:
当且仅当N = 1时,我想得到第一个元素.
如果异常中序列中有多个元素,请使用SingleOrDefault
,如果它失控,您将被告知(错误日志).
如果你获得第一个元素并且你永远不会想要另一个元素是很重要的,那么使用得更好,FirstOrDefault
因为它有一个有意义的名字.
如果序列中元素的索引很重要并且您(当前)需要第一个元素,但将来可能会更改,请使用ElementAtOrDefault
.
归档时间: |
|
查看次数: |
250 次 |
最近记录: |