LINQ - Запрос с отчетливым / GroupBy о проблеме с несколькими свойствами - PullRequest
1 голос
/ 05 мая 2011

У меня есть некоторые данные, хранящиеся в EntitySet моего domainContext, где я хочу выделить только его части.Проблема в том, что я получаю все CageNames - а не только «Новые» с самой высокой датой.

Это данные:

SiteId CageId CageName Date
1,1, Lot1, '2011-05-05'
1, 1, LotNew, '2011-05-06'
1, 2, Lot1, '2011-05-05'
1, 2,LotNew, '2011-05-06'
1, 3, Lot1, '2011-05-05'
1, 3, LotNew, '2011-05-06'

Так для каждогоCageId в списке Я хочу вернуть CageName для записи с самой высокой датой.Мой код, пытающийся сделать это, находится здесь:

Dim CageName As Array

CageName = DomainContext.SiteCageDatas.Where(Function(h) h.SiteId = SiteId) _
      .Select(Function(x) x.CageName).Distinct.ToArray() 

Но это просто дает мне все CageNames .. Любая идея, как мне это исправить, я думаю, возможно, с использованием группового или что-то?Разум;Я использую VB.NET

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Я делаю это сейчас, но это ничего не возвращает: (

 CageName = DomainContext.SiteCageDatas.GroupBy(Function(a) New With {a.SiteId, a.CageId}).Select(Function(a) a.OrderBy(Function(b) b.Date).LastOrDefault()).Where(Function(x) x.SiteId = SiteId).Select(Function(x) x.CageName).ToArray()
1 голос
/ 05 мая 2011

Попробуйте это:

DomainContext.SiteCageDatas.GroupBy(Function(x) x.CageId).Select(Function(x) x.OrderBy(Function(x) x.Date).LastOrDefault()).Where(Function(x) x IsNot Nothing).Select(Function(x) x.CageName).ToArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...