我有两张桌子
表1
ID name
1 a
2 b
3 c
表2
id date
1 4/4/2016
1 4/5/2016
2 6/6/2016
3 7/7/2016
3 7/8/2016
预期结果
id name date
1 a 4/4/2016
2 b 6/6/2016
3 c 7/7/2016
这里我尝试了一些查询,它返回了我的完整记录,但我只需要表2中较小的日期,任何人都可以让我知道如何获得相同的查询。
from p in table1 join n in table2 on p.Id equals n.Id select new list(){ ID=p.ID, name=p.Name, date=n.date}
答案 0 :(得分:1)
只需将您的加入转为group join并从每个相关群组中获取最短约会日期:
from p in table1
join n in table2 on p.Id equals n.Id into g
select new list() { ID = p.ID, name = p.Name, date = g.Min(n => n.date) }
答案 1 :(得分:0)
这样的事情应该有效:
var result =
table1
.Select(x =>
new
{
ID = x.ID,
Name = x.Name,
Date =
table2.Where(y => y.ID == x.ID)
.OrderBy(y => y.Date)
.Select(y => y.Date)
.FirstOrDefault()
})
.ToList();