Допустим, у меня есть Somelist вещей, которые я хочу разделить на два отдельных списка по каким-либо условиям.// 1 - two Where's
var trueGroup = someList.Where(x => x.SomeCondition);
var falseGroup = someList.Where(x => !x.SomeCondition);
// 2 - groupby the condition, then ToDictionary
var groupedByCondition = someList.GroupBy(x => x.SomeCondition)
.ToDictionary(x => x.Key, x => x.ToList());
var trueGroup = groupedByCondition[true];
var falseGroup = groupedByCondition[false];
// 3 - groupby the condition, then First
var groupedByCondition = someList.GroupBy(x => x.SomeCondition);
var trueGroup = groupedByCondition.First(x => x.Key).ToList();
var falseGroup = groupedByCondition.First(x => !x.Key).ToList();
< /code>
Все 3 определенно работают, но я ищу наиболее эффективный способ сделать это. Я довольно определенный вариант № 1 наименее эффективен, так как ему нужно дважды идентифицировать полный список (пожалуйста, поправьте меня, если я ошибаюсь в этом), а варианты № 2 + #3, вероятно, одинаково эффективны (в лучшем случае одним из них может быть микро-оптимизация). < /P>
Однако что-то продолжает меня, что я забываю очень очевидное решение. Есть ли более эффективный/общепринятый способ сделать это, о котором я просто не думаю?
Подробнее здесь: https://stackoverflow.com/questions/797 ... -condition