2017-04-12 3 views
2

単語のリストに対してクエリを実行します。私のデータベースでMVC .NET OrWhereクエリ

string[] words = {"word1", "word2", "word3"}

私はアーティストとタイトルとトラックのリストを持っています。すべてのクエリをOrWhere条件に連結したい これは私が一瞬持っているものです。

var word; 
var queryTracks; 
for (int i = 0; i < words.Length; i++) 
{ 
    word = words[i]; 
    queryTracks = db.Tracks.Where(c => c.Title.Contains(word) || c.Artist.Contains(word)); 
} 
// all found, put all that into a list 
var filteredTracks = queryTracks.ToList(); 

私はすでにこのような.Concat()方法を試してみました:

var word = words[0]; 
var queryTracks = db.Tracks.Where(c => c.Title.Contains(word) || c.Artist.Contains(word));; 
for (int i = 1; i < words.Length; i++) 
{ 
    word = words[i]; 
    queryTracks = queryTracks.Concat(db.Tracks.Where(c => c.Title.Contains(word) || c.Artist.Contains(word))); 
} 

しかし、それは動作しませんでした...私はちょうどすべてが欲しいですword1、word2、word3のトラック。大きなクエリを作成してリストに入れることはできますか?それともlist1、list2、list3を作成して連結する必要がありますか?

答えて

6

あなたは

string[] words = {"word1", "word2", "word3"} 

IEnumerable<Track> tracks = db.Tracks.Where(c => words.Contains(c.Title) || words.Contains(c.Artist)); 
+0

単一のクエリを使用することができますこれは、あなたに感謝し、......とても簡単でした! – Didi