как запросить только новую версию? - PullRequest
0 голосов
/ 27 января 2011

Следующий запрос дает мне штрих-код, номер версии этого штрих-кода и код приложения.Мне нужен запрос, чтобы отфильтровать дубликаты штрих-кодов и сохранить только самый высокий номер версии этого штрих-кода.

Я думал о том, как объединить поле штрих-кода и поле версии и сохранить только самое высокое, но это кажется грязным.Есть ли более чистое решение?

select Barcode, MAX(versionNo) vn, Appcode from Mailsort
where Created between '01/26/2011' and '01/27/2011'
group by Barcode, AppCode;

Причиной этого запроса является получение оператора LINQ. Это подсчитывается для каждого кода приложения независимо от штрих-кодов или версии на данный момент.

var results = from p in dataContext.GetTable<mailsortEntity>()
              where p.Created > datetime && p.Created < datetime.AddDays(1)
              group p by new { p.AppCode } into g
              select new AppCodeCountEntity
              {
                  AppCode = g.Key.AppCode,
                  Count = g.Count()
              };

Есть ли лучшее решение, чем приведенный выше код LINQ?

1 Ответ

1 голос
/ 27 января 2011
var maxQuery = 
 from rh in MailSort
 group rh by rh.BarCode into latest
 select new { BarCode = latest.Key, MaxVersion = latest.Max(l => l.Version) }
;

var query = 
 from rh2 in MailSort
 join max in maxQuery on new {rh2.BarCode, Version = rh2.Version } 
  equals new { max.BarCode, Version = max.MaxVersion }
 select new { rh2.BarCode, rh2.Version, rh2.AppCode }
;

var barCodes = query.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...