2016-04-28 15 views
1

から一つのレコードを取得するためのクエリを結合する2台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  

Iいくつかのクエリを試してみました私の完全な返すレコードが、私はテーブルから小さいほんの一日だけ必要があります誰も私が同じのクエリを取得する方法を知っていることができます。

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

ヤコブMassad @、あなたの時間に感謝。 1つの簡単な質問plz。 3つ以上の結合条件がある場合、どのようにして同じ結果を達成できますか。 – poc

+0

それは異なります。私はそれについて十分な詳細を持って別の質問を作成することをお勧めします。 –

+0

ところで、これはデータベースのクエリですか?または、これらのテーブルは記憶にありますか?テーブルの大きさ。私が提供したソリューションは、パフォーマンス面で最善のものではないかもしれないことに注意してください。 –