2017-07-25 4 views
0

reportMessagesは、報告書から受け取られます。 cleandirsは、ストレージから読み込まれます。 私はoutterをして​​います。このため報告書 の内容を確認しようとしているreportmessagesに参加して、ストレージ・データLinq外の左の結合私は間違って何ですか?

私は100にリストを制限し、まだm.count = 213

私は間違っていますか?

var q = from r in reportMessages.Take(100) 
     join pp in cleanNoDirs.Take(100) 
     on r.FileName equals ("{:D2}{:D2}-{}.ps".format(pp.NameMin, pp.NameSec, pp.CameraMAC)) 
     into ps 
     from p in ps.DefaultIfEmpty() 
     select new { 
      Uploaded = p, 
      Orig = r 
     }; 
var m = q.ToList(); 

答えて

0

あなたは100に各テーブルから取得したレコードを制限していますが、1対多または多対多数の関係を持っているならば、joinの結果は、よりその100のレコードになります。最悪の場合、最初のコレクションの各レコードが2番目のコレクションのすべてのレコードと一致する場合、結果に100 * 100のレコードが表示されます。代わりに

、100にToList制限して結果を実体化する前に:

var result = (from r in reportMessages 
       join pp in cleanNoDirs 
       on r.FileName equals ("{:D2}{:D2}-{}.ps".format(pp.NameMin, pp.NameSec, pp.CameraMAC)) into ps 
       from p in ps.DefaultIfEmpty() 
       select new { 
        Uploaded = p, 
        Orig = r 
       }).Take(100).ToList(); 
+0

私は左 –

+0

@MickeyPerlsteinを外部結合と結合混同だと思う - あなたは歓迎されている:)のために私の答えに追加されたリンクをチェック異なる結合に関するより多くの例/説明。 –

関連する問題