Мне нужно создать 2 отдельных списка из 1 списка. Если company.IsNone истинно, я хочу, чтобы все сотрудники добавили в первый список, который соответствует списку местоположенийToCompare, если это не так, я хочу, чтобы все сотрудники не соответствовали списку местоположенийToCompare. Это полная противоположность при заполнении второго списка. Есть ли способ объединить эти два оператора if в один, или я вынужден иметь два отдельных для заполнения двух списков?Есть ли способ объединить эти два оператора LINQ в один
var noneEmployees = company.IsNone
? employees.Where(employee => locationsToCompare.Any(x => x.ID == employee.LocationID)).ToList()
: employees.Where(employee => locationsToCompare.All(x => x.ID != employee.LocationID)).ToList();
var locationEmployees = company.IsNone
? employees.Where(employee => locationsToCompare.All(x => x.ID != employee.LocationID)).ToList()
: employees.Where(employee => locationsToCompare.Any(x => x.ID == employee.LocationID)).ToList();
'.GroupBy' возможно? –
@MattBurland GroupBy будет сложным, поскольку списки могут иметь непустое пересечение (из-за 'Any') ... Я не могу думать ни о чем, кроме« Агрегат », но это выглядит более неудобно, чем два отдельных' Where' calls (предполагая, что код действительно выполняет то, что требуется OP). –
Боковое примечание: код не соответствует описанию (Any (! =) И Any (==) не противоположны. –