Member 14169626 Ответов: 2

Как группировать, имея лямбда-выражение В C#?


Выберите id из таблицы person, где per=123 group by a,b having count(*)=max(d)

Моя сущность.Человек.где(Х=>У Х.в=123).Метод groupBy(х=>, новые {х.а х.б})

Что я уже пробовал:

Как получить лямбда-выражение этого запроса.

2 Ответов

Рейтинг:
0

Maciej Los

Попробуй:

var result = Myentity.Person
    .Where(x=>x.per==123)
    .GroupBy(x=>new {x.a, x.b})
    .Select(grp=> grp.OrderByDescending(x=> x.d).First())
    .ToList();


Richard MacCutchan

5ed для правильного решения.

Maciej Los

- Спасибо, Ричард.

Member 14169626

Спасибо

Maciej Los

Всегда пожалуйста.

George Swan

Разве предложение "где" не должно быть x=>x.per==123?

Maciej Los

Есть. В начале.

George Swan

Разве вы не использовали оператор присваивания '=' вместо оператора'=='?

Maciej Los

Хороший улов!
Исправлено!
- Спасибо, Джордж.

George Swan

Я думаю, что следующий оператор Select может быть немного быстрее, так как нет необходимости сортировать коллекцию.
Выберите(grp => grp.Где(Р=&ГТ;п.д==стеклопластик.Макс(P=&ГТ;п.д)))

Maciej Los

Я бы предложил опубликовать это в качестве решения. Он заслуживает за 5!

George Swan

Я не мог взять на себя ответственность за это, поскольку первоначальная идея была вашей, я просто немного изменил ее.

Maciej Los

Да, вы можете ;)