-1

我有两张桌子 表 1

ID1   Col1_1  
1     "123"   
2     "12331"   

表 2 (FK1 = ID1)

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"

我需要加入这些表,按日期(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"

可以提出这样的要求吗?我需要以(来自...加入...分组...选择...)形式提出此请求。

4

1 回答 1

2
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();

我已经使用 LINQ to Objects 对其进行了测试,并且您的示例数据和结果符合预期。

于 2013-03-10T10:54:54.217 回答