Как выбрать Макс StartDate в Linq

1

Я хочу только выйти из Max StartDate, его кратность дат с тем же CustomNumber

Какие-либо предложения?

Мой упрощенный код

from Cus in Customers
where Cus.CustomNumber == 2 
group Cus by new 
 { Cus.Name,Cus.City,Cus.StartDate}
 into grp
 select new 
 {
    Name = grp.Key.Name,
    City = grp.Key.City, 
    StartDate = grp.Key.StartDate,

    //I have tried, but it doesnt work for me
    //StartDate = grp.Max(Cus=> grp.Key.StartDate)
 }
Теги:
linq

2 ответа

1

попробуйте под кодом

StartDate = grp.Max(x => x.StartDate)
1

Вы можете попробовать следующее:

var result = from Cus in Customers
             where Cus.CustomNumber == 2 
             group Cus by new 
             { Cus.Name, Cus.StartDate}
             into grp
             select new 
             {
                 Name = grp.Key.Name,
                 StartDate = grp.Max(x=>x.StartDate)
             };

Используя grp вас есть доступ к случайной группе, которую вы создаете в своем запросе linq, а затем используя метод расширения Max вы получаете максимальное значение StartDate в своей группе.

ОБНОВИТЬ

Поскольку теперь у вас есть соединение перед группировкой, вам нужно изменить свой код на следующий:

var result = from res in 
             (from customer in Customers
             join house in Houses 
             on customer.CustomNumber equals house.CustomNumber
             where customer.CustomNumber == 2               
             select new { Name = customer.Name, StartDate = house.StartDate })
             group res by res.Name into grp
             select new { Name = grp.Key, StartDate = grp.Max(x=>x.StartDate) };

ОБНОВЛЕНИЕ # 2

Если вы хотите, чтобы вы получили имя и город клиента в своем результате, вы должны использовать следующий код:

var result = from res in 
             (from customer in Customers
             join house in Houses 
             on customer.CustomNumber equals house.CustomNumber
             where customer.CustomNumber == 2               
             select new { Name = customer.Name, City = customer.Name, StartDate = house.StartDate })
             group res by new { res.Name, res.City } into grp
             select new 
             { 
                 Name = grp.Key.Name, 
                 City = grp.Key.City,  
                 StartDate = grp.Max(x=>x.StartDate) 
             };
  • 0
    Это работает в этом примере, спасибо! Но у меня есть 2 разные таблицы в моем реальном коде, и он не работает. Я изменил оригинальные вопросы. Любые предложения, как заставить это работать?
  • 0
    @ user3635120 хорошо, дай мне несколько минут, чтобы проверить это, и я дам тебе знать.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню