2016-09-02 16 views
0

いくつかの例があることは知っていますが、自分のコードに適用できませんでした。私はLinqとSQLにはかなり新しいです。私は2つのテーブルを持っています。値が一致するLINQ結合テーブル

まず表:

-------------- 
| Id | Count | 
-------------- 
| 1 | 10 |  
-------------- 
| 2 | 4 |    
-------------- 

第二表:あなたが見ることができるように

-------------- 
| Id | Name | 
-------------- 
| 1 | Tom |  
-------------- 
| 2 | John |    
-------------- 
| 3 | Nick |    
-------------- 
| 4 | Max |    
-------------- 

、2番目の表は、最初よりも多くのレコードを持っています。私の目標はIDに基づいて参加することです。問題は、私がテーブルに参加した後、Id 1と2である一致するレコードのみを表示することです。すべてのId(1から4まで)を表示したいのですが、両方のテーブルに一致がなければそれは次のようになります。デフォルト値は0です

// first table 
var listCount = entity.tblKundes.Where(x => x.Studio == 2) 
           .Select(x => new { x.Id, x.Name}) 
           .GroupBy(x => x.Name).ToList(); 

// second table 
var listBerater = entity.tblUsers.Where(x => x.Studio == 2) 
           .Select(x => new { x.Id, x.Name}) 
           .ToList(); 

// This join should be edited so that it displays non matching records as well 
var test = listCount.Join(
    listBerater, 
    count => count.Key, 
    berater => berater.Id, 
    (count, berater) => new { listCount = count, listBerater = berater } 
).ToList(); 

編集:

---------------------- 
| Id | Name | Count | 
---------------------- 
| 1 | Tom | 10 | 
---------------------- 
| 2 | John | 4 |  
---------------------- 
| 3 | Nick | 0 |  
---------------------- 
| 4 | Max | 0 |  
---------------------- 

は、これまでのところ、私はこのコードを持っています

var test2 = (from list in listCount 
      join berater in listBerater on list.Berater equals berater.Id into gj 
      from sublist in gj.DefaultIfEmpty() 
      select new { sublist.Id, sublist.Nachname, sublist.Vorname }).ToList(); 
+1

をご覧ください。https://msdn.microsoft.com/en-us/library/bb397895.aspx – DWright

+0

ご回答ありがとうございます。私の編集を見ることができますか?私はmsdnの例のようにそれらに参加するrderのグループを削除する必要がありました。それを名前でグループ化する手助けはできますか? – Anokrize

+0

あなたは答えを受け取った後、本質的な質問を変更すべきではありません。あなたは外部結合を行う方法を尋ねられ、それは答えられました。今、グループ化の仕方を尋ねます。あなたがインターネット上の(多くの)例を見つけた後でそれを理解できなければ、新しい質問を開くべきです。そして、おそらくあなたを助けた答えを受け入れることができます。 –

答えて

0

すべての構造化問合せ言語には、「左結合」と呼ばれる典型的な概念があります。 Left-Joinは、2番目のテーブルに同等のものがなくても、1番目のテーブルのすべての行のデータを保持することを意味します。 「内部結合」は少し異なり、一致したデータ行のみを検索します。

ここでは、問題に関する十分な情報を見つけることができます。 Left Join

関連する問題