linq join查询从第二个表中获取一条记录

时间:2016-04-28 11:12:44

标签: linq c#-4.0

我有两张桌子

表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}

2 个答案:

答案 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();