1
Entity FrameworkとLINQにはほとんど慣れていません。私は私たちのいくつかの特別な行をフィルタリングしたいいくつかの列を持つ単一のエンティティセットを持っています。 4行の名前はGuid(文字列)、Year(ショート)、Month(ショート)、FileIndex(ショート)です。私は、Guid-Year-Monthの既存の組み合わせごとに最大のFileIndexを持つすべての行を取得したいと考えています。LINQクエリを単純化して特別な行をフィルタリングする方法
私の現在のソリューションは、次のようになります。
var maxFileIndexRecords = from item in context.Udps
group item by new { item.Guid, item.Year, item.Month }
into gcs
select new { gcs.Key.Guid, gcs.Key.Year, gcs.Key.Month,
gcs.OrderByDescending(x => x.FileIndex).FirstOrDefault().FileIndex };
var result = from item in context.Udps
join j in maxFileIndexRecords on
new
{
item.Guid,
item.Year,
item.Month,
item.FileIndex
}
equals
new
{
j.Guid,
j.Year,
j.Month,
j.FileIndex
}
select item;
私は、より高いパフォーマンスと短いソリューションがあるはずだと思います。誰かが私にヒントを持っていますか? ありがとうございました
理論的には、ネストされたクエリの最大値を持つ値を選択すると、理論的にはネストされたクエリを実行できるはずです。そしてネストされたクエリはあなたのグループです。 – smoksnes