我正在尝试构建一个LINQ语句,用于在C#中加入以下两个列表。
的List1:
FormID FormRound
2 1
2 2
2 3
3 1
4 2
列表2:
FormID FormRound Category Date
2 1 Test1 23-Aug
2 1 Test2 24-Aug
2 1 Test3 25-Aug
2 2 Test1 26-Aug
2 2 Test3 27-Aug
3 1 Test1 28-Aug
3 1 Test2 29-Aug
3 1 Test3 30-Aug
我应该得到如下输出。
FormID FormRound Test1Date Test2Date Test3Date
2 1 23-Aug 24-Aug Test3
2 2 26-Aug NA 27-Aug
3 3 28-Aug 29-Aug NA
任何人都可以帮我构建LINQ声明吗?
答案 0 :(得分:0)
此LINQ查询可能如下所示:
var results = (from a in list1
join b in list2 on new { a.FormId, a.FormRound } equals new { b.FormId, b.FormRound }
group b by new { a.FormId, a.FormRound } into c
select new
{
c.Key.FormId,
c.Key.FormRound,
Test1Date = c.Where(d => d.Category == "Test1").Select(e => e.Date).FirstOrDefault(),
Test2Date = c.Where(d => d.Category == "Test2").Select(e => e.Date).FirstOrDefault(),
Test3Date = c.Where(d => d.Category == "Test3").Select(e => e.Date).FirstOrDefault(),
});
使用您的样本数据生成:
2 1 23-Aug 24-Aug 25-Aug
2 2 26-Aug null 27-Aug
3 1 28-Aug 29-Aug 30-Aug
这不完全是您的预期结果,但我认为根据我对您问题的评论,您对所期望的内容存在一些问题。