0

私は次のようなテーブルデータを持っています:

Fname   Lname   Date          ForeignKey
 A       B      2012-01-01      1
 A       B      2012-11-01      1
 A       B      2013-12-25      1
 C       K      2009-01-01      2
 C       K      2001-11-01      2
 C       K      2011-12-25      2

私のテーブルはEFでABCと呼ばれているので、外部キーでグループ化したいので、このクエリを使用してグループ化できますが、各行の詳細を取得するにはどうすればよいですか?

var q =  from abc in context.ABC
         group abc by abc.ForeignKey into g
         join efg in context.EFG on g.Key equals efg.AppId
         select new
         {
             MortgId = g.Key,
             TrackingDate = g.Max(val => val.Date),
             Fname=g.?,
             Lname=g.?,
             Sale=efg.SalesAmount
         };
        foreach(var result in q)
        {
         if(result.Fname=="A")
         {
         }
        }

それは私にリストを返します。これで最大日付のレコードが得られますが、この最大日付のFnameとLnameの詳細を取得したいので、手がかりを取得できません。

更新: 結果は次のようになります:

Fname   Lname   Date          ForeignKey
 A       B      2013-12-25      1
 C       K      2011-12-25      2

最大日に対して詳細を取得したい。
新しい更新: Fnameに基づいて確認したいので、最大日付結果のFnameを取得する方法について疑問符を付けました。私はそれが今はっきりしていることを望みます。

4

1 に答える 1

1

降順で各グループの最大日付を持つオブジェクトを取得し、最初に取得します。

var list = context.ABC.GroupBy(abc => abc.ForeignKey)
        .Select(g => g.OrderByDescending(a => a.Date).First())

次に、他のプロパティを簡単に取得できます。

foreach (var abc in list)
{
    var fname = abc.Fname;
    var lname = abc.Lname;
}
于 2013-02-06T10:36:11.147 に答える