快速的問題,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