快速的问题,programmaticaly最好的方法是问“这个序列中是否只有一个元素满足X条件?”使用Linq?如何在LINQ中问“在LINQ中有没有满足条件的元素?
即
// Pretend that the .OneAndOnlyOne() method exists
int[] sequence = new int[] { 1, 1, 2, 3, 5, 8 };
Assert.IsTrue(sequence.OneAndOnlyOne(x => x == 2);
Assert.IsFalse(sequence.OneAndOnlyOne(x => x == 1);
这样的事情可以做:
sequence.SingleOrDefault(x => x == 2) != null;
但是这是一个有点麻烦。
我想我可以推出自己的扩展方法,但这似乎是我的代码中的一种常见模式,我想确保有一个很好的干净方法来做到这一点。有没有使用内置LINQ方法的方法?
'SingleOrDefault'将引发InvalidOperationException :如果有多个比赛。 – SLaks 2010-01-02 23:32:56
我推荐IsLone()作为扩展方法的可能替代名称。你也用同样的功能做两件事,过滤然后检测是否只有一个元素。我会这样做:sequence.Where(x => x == 2).IsLone() – ICR 2010-01-03 01:39:00