我想检查一个枚举是否包含0,1或1+个元素。我想避免枚举整个序列的开销,因此要避免Count()
。
我知道Linq查询SingleOrDefault()
可用于此目的,但在1+案例中添加了繁琐的异常处理。
没有Count()
且没有异常处理的任何方法吗?
答案 0 :(得分:4)
查看序列是否包含多个元素的一种方法是使用document.getElementById('presentClicks').addEventListener('click', addClick.bind(this, clickerCounter));
和Take
,如下所示:
Count
if (mySequence.Take(2).Count() == 2) {
... // Sequence has at least two elements
}
限制最多计算两次,因此使用Take(2)
并不像Count()
那样昂贵。
如果您需要抓取第一个元素,请将mySequence.Count() > 1
的结果存储在列表中,以避免再次迭代序列。
答案 1 :(得分:2)
.ElementatOrdefault(1) != null
答案 2 :(得分:2)
您可以使用skip和any。
list.Skip(n).Any();
答案 3 :(得分:0)
如果您想要返回符合某些条件的第一个元素,您应该使用First或FirstOrDefault,而不是Single