2016-11-30 2 views
1

パーツ番号のみを含むテーブル1があります。プライマリキー以外の値でLinqとエンティティフレームワークが異なる

私はテーブル番号2を持っていますが、それに関連する他の多くのフィールドもあります。

は、私はまた、表2パート番号から個別の部品番号を取得する必要があります。1.

がテーブルの主キーではないテーブル内の部品番号を持っていないテーブル2からのすべての部分を取得する必要があります2.表2には300万件を超えるレコードがあるため、複数のステートメントはスマートではない可能性があります。

context.Parts.Where(x => !partmasterids.Contains(x.PartNumber)).ToList(); 

これは、明確なリターンを得ること以外はすべての基準を満たす必要があります。

context.Parts.GroupBy(x => x.PartNumber).Select(x => x.First()).Where(x =>!partmasterids.Contains(x.PartNumber)).ToList();

私は、LINQ文の上にしようと、どこ文の後が、それは動作しませんにGROUPBYの周りに移動しました。

First()でエラーが発生するか、FirstOrDefaultが無限に実行されます。 Distinctは機能しません。正しいLINQ文を書く方法がわかりません。

+0

表1と表2のエンティティクラスを用意してください。 – kat1330

+1

DistinctBy(x => x.PartNumber).ToList()また、別の方法でもcontext.Parts.Where(x =>!parmasterids.Any(y => y == x.PartNumber) – Patriicya

答えて

1

すでにテーブルAをpartmasteridsに登録しているとしますか?

そして、あなたが持っている上記のステートメントから欠落している部分(テーブルB-TableAの): var missingParts = context.Parts.Where(x => !partmasterids.Contains(x.PartNumber)).ToList();

明確なpartnumbersは、単にTableAの組合(テーブルB-TableAの)だろうか?

var allPartNumbers = partmasterid.Union(missingParts.Select(p=>p.PartNumber)).Distinct(); 
関連する問題