C# linq - разделение списка на две переменные по условию [дублировать]C#

Место общения программистов C#
Ответить
Anonymous
 C# linq - разделение списка на две переменные по условию [дублировать]

Сообщение Anonymous »

Допустим, у меня есть 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»