2017-07-12 7 views
1

私のプロジェクトでは、配列に提供されたモデルIDと一致しない車のデータのリストを返す必要があります。私は私の質問をうまくいくためにどうやって行くのか分からない。これまでのところ、私は以下を持っています:ラムダ式を使った照会forはリスト内に存在します

var IdList = new List<int> { 60,61,62, 63, 64, 65 }; 
var query = Context.ManufacturersTable.Where(m => m.Date == date && m.CountryToship = country && m.ExportOnly == false); 
if(query.Count() > 0) 
    query = query.Where(x => x.CarMoreInfoTable.CarModelTable.Where(f => IdList.Contains(f.ModelId))) //Cannot convert lambda expression to intended delegate type error here 

return query 

私がお互いにリンクされている3つのテーブルがあります。しかし、いくつか私はどのように私は与えられた配列内のIDを含んでいないすべてのデータをクエリに私に指示することができますか?

はここでの問題、最初の代わりにIEnumerableをのメソッドの戻りブール値を委任することを期待秒である「どこので、あなたがエラーを持っているあなたに

+0

インナー '(の競合使用の使用の' query.Where(X => x.CarMoreInfoTable.CarModelTable.Any(F =>!IdList.Contains(f.ModelId))) '、ポイントにしてみてください) ' – Satpal

+2

これを正しく理解していれば、' f =>!IdList.Contains(f.ModelId) 'を実行できますか? –

+0

ビューの外にある行の最後のコメントにエラーメッセージを挿入したことに気付いただけです。スクロールバーなしで見ることができるように、ポストの本文にそのメッセージを入れる方が良いかもしれません。 –

答えて

2

ありがとうございます。 (編集コメント)そして、私はあなたが否定しなければならないと思う:

IdList.Contains(f.ModelId)

編集

あなたは(私はそれがCarModelクラス内であることを前提としています)車のデータが必要な場合は、あなたが必要とする最初の場所を変更SelectMany(多くのコレクションを1つにまとめたい)と内部の式(containsを使用)を否定します。

var result = query 
.SelectMany(x => x.CarMoreInfoTable.CarModelTable 
        .Where(f => !IdList.Contains(f.ModelId))).ToList(); 
+0

'CarModelTable'の全ての項目が' IdList'にあってもその項目を省略しません –

+1

@DaveBecker私の答えを編集しました – miszczak

関連する問題