2014-11-04 77 views
0

我正在試圖搜索數據表中的所有具有任何單詞列表的條目。該列表可以具有可變數量的單詞。這是我現在的代碼:linq到sql中where子句條件的動態數

string[] Words = InitialString.Split(' '); 

       foreach (string word in diseaseWords) 
       { 
        List<mrconso_SnoMed2014> curMatches = (from a in masterDB.mrconso_SnoMed2014s 
                 where a.STR.ToLower().Contains(word.ToLower().Trim()) 
                 select a).ToList(); 
        matches.AddRange(curMatches); 
       } 

此代碼執行時間太長。所有的數據庫調用都需要時間。我想使用一些動態查詢,其中包含可變數量的where子句。喜歡的東西:

List<mrconso_SnoMed2014> curMatches = (from a in masterDB.mrconso_SnoMed2014s 
                  where a.STR.ToLower().Contains(Words[0].ToLower().Trim()) 
                  or a.STR.ToLower().Contains(Words[1].ToLower().Trim()) 
                  ... 
                  select a).ToList(); 

回答

0

您可以使用LINQ相交,看起來像:

list1.Select(s=>s.STR.ToLower).Intersect(list2.Select(s=>s.ToLower().Trim()))