Linq group by语句

Linq group by语句,linq,join,group-by,Linq,Join,Group By,我有两张桌子 表1 表2(FK1=ID1) 我需要加入这个表,按日期排序(Col2_2)和按FK1分组。 结果应该是这样的 ID2 FK1 Col2_1 Col2_2 Col1_1 2 1 "21" "5.06.2012" "123" 4 2 "41" "5.04.2012" "12331" 有可能提出这样的要求吗?我需要有这个请求在(从…加入…集团…选择…)的形式 我已经使用LINQ to Objects

我有两张桌子 表1

表2(FK1=ID1)

我需要加入这个表,按日期排序(Col2_2)和按FK1分组。 结果应该是这样的

ID2   FK1   Col2_1       Col2_2     Col1_1
 2     1     "21"     "5.06.2012"   "123"
 4     2     "41"     "5.04.2012"   "12331"
有可能提出这样的要求吗?我需要有这个请求在(从…加入…集团…选择…)的形式


我已经使用LINQ to Objects对其进行了测试,您的样本数据和结果与预期的一样。

我尝试从表2中的t2组t2按t2.FK1从gr组加入到表1中的t1组。。。选择新{…};但是结果是重复的。为什么
Col2\u 1
的值为“21”?哦,我错过了“orderby Col2\u 2”。“2012年6月5日”是FK1=“1”的最新日期,这就是为什么我们有相应的Col2_1=“21”值。
ID2   FK1   Col2_1      Col2_2
 1     1     "11"     "4.04.2012"
 2     1     "21"     "5.06.2012"
 3     1     "31"     "2.04.2012"
 4     2     "41"     "5.04.2012"
 5     2     "51"     "1.02.2012"
ID2   FK1   Col2_1       Col2_2     Col1_1
 2     1     "21"     "5.06.2012"   "123"
 4     2     "41"     "5.04.2012"   "12331"
var query = from t1 in Table1
            join t2 in Table2 on t1.ID1 equals t2.FK1
            group new { t1, t2 } by t1.ID1 into g
            let i = g.OrderByDescending(e => DateTime.Parse(e.t2.Col2_2))
                     .FirstOrDefault()
            select new
            {
                ID2 = i.t2.ID2,
                FK1 = i.t2.FK1,
                Col2_1 = i.t2.Col2_1,
                Col2_2 = i.t2.Col2_2,
                Col1_1 = i.t1.Col1_1
            };
var results = query.ToList();