Я хочу взять результаты предложения where в списке, а затем взять этот набор результатов и создать только один новый тип, все поля которого созданы из агрегатов исходного запроса. Итак, учитывая базовый пример ниже, можно ли как-то объединить 2 оператора linq в один? Если в оригинале нет строк, он должен возвращать значение null. Спасибо!
class Foo
{
public int A { get; set; }
public int B { get; set; }
}
List<Foo> lst = GetFooList();
var q = (from f in lst
where f.A > 3
select f).ToList();
if (q.Count != 0)
{
var qq = new
{
MinA = q.Min(l => l.A),
MaxB = q.Max(h => h.B),
};
// now do something with qq
}
Обновление: для моей ситуации в исходном наборе много элементов, но после предложения where результирующий набор очень мал. Перечисление второго набора несколько раз не должно быть проблемой. Также мне нужно использовать first и last в наборе, чтобы получить значение из этих записей. Группировка по ответу мне больше подходит. Агрегатный способ очень интересен, и я думаю, что у него есть другое применение.