IEnumerable<T>
'u LINQ ve yalnızca tek bir sorgu/LINQ ifadesi kullanarak iki IEnumerable<T>
'a bölebilir miyim?Bir IEnumerable'ı iki sorguda olmaksızın bir boole ölçütü tarafından ikiye bölebilir miyim?
IEnumerable<T>
üzerinden iki kez yinelemekten kaçınmak istiyorum. Örneğin, son iki ifadeyi aşağıdaki şekilde birleştirmek mümkün mü, bu nedenle allValues yalnızca bir kez değiştirilir mi?
var groups = allValues.GroupBy(val => val.SomeProp);
senin örneğinde olduğu gibi acil olarak değerlendirilmesi zorlamak için::
IEnumerable<MyObj> allValues = ...
List<MyObj> trues = allValues.Where(val => val.SomeProp).ToList();
List<MyObj> falses = allValues.Where(val => !val.SomeProp).ToList();
zarif! Anahtarın eksik olduğu durumu işlemek için groups.ContainsKey() veya groups.TryGetValue() yöntemini her zaman kullanabilirim. – SFun28
Bir anahtar (true veya false) kullanılmazsa, bu kilitlenir. Örneğin. SomeProp her zaman doğruysa, gruplar [false] istisna ile çarpılır "Verilen anahtar sözlüğe eklenmedi" – buffjape
GroupBy grupları oluşturmak için sıralama kullanın. Tarama işleminin iki kez yinelenmesi daha iyi bir şey yapıp yapmayacağımı bilmiyorum. – ejmarino