C# LINQ - разделение списка на две переменные на условиеC#

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

Сообщение Anonymous »

Допустим, у меня есть SomeList вещей, которые я хочу разделить на два отдельных списка с каким -то условием; Я думал о 3 вариантах: < /p>
// 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, вероятно, одинаково эффективен (в лучшем случае одним из них может быть микрооптимизация). Тем не менее, что -то продолжает ворчать меня, что я забываю очень очевидное решение. есть ли более эффективный/стандартный способ сделать это, о котором я просто не думаю?


Подробнее здесь: https://stackoverflow.com/questions/797 ... -condition
Ответить

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

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

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

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

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