2016-04-28 104 views
1

獲得一個記錄,我有兩個表LINQ聯接查詢從第二個表

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

回答

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) } 
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(); 
+0

@雅各布·馬薩德,感謝您的時間。一個簡單的問題PLZ。如果我有3個或更多的連接條件,我怎樣才能達到相同的效果。 – poc

+0

這取決於。我建議你用足夠的細節來創建另一個問題。 –

+0

順便說一下,這是一個數據庫查詢?或者這些表在內存中?桌子有多大。請注意,我提供的解決方案可能不是性能最好的解決方案。 –