C# linq to sql中where子句条件的动态数目
我试图在一个数据表中搜索包含任何单词列表的所有条目。列表的字数可以是可变的。这是我现在的代码:C# linq to sql中where子句条件的动态数目,c#,linq-to-sql,C#,Linq To Sql,我试图在一个数据表中搜索包含任何单词列表的所有条目。列表的字数可以是可变的。这是我现在的代码: string[] Words = InitialString.Split(' '); foreach (string word in diseaseWords) { List<mrconso_SnoMed2014> curMatches = (from a in masterDB.mr
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);
}
string[]Words=InitialString.Split(“”);
foreach(单词中的字符串)
{
列出curMatches=(来自masterDB.mrconso\u SnoMed2014s中的a)
其中a.STR.ToLower()包含(word.ToLower().Trim())
选择一个.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();
list1.Select(s=>s.STR.ToLower).Intersect(list2.Select(s=>s.ToLower().Trim()))
List curMatches=(来自masterDB.mrconso\u SnoMed2014s中的a)
其中a.STR.ToLower()包含(字[0].ToLower().Trim())
或a.STR.ToLower().Contains(单词[1].ToLower().Trim())
...
选择一个.ToList();
您可以从LINQ使用Intersect,看起来像:
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();
list1.Select(s=>s.STR.ToLower).Intersect(list2.Select(s=>s.ToLower().Trim()))