linq到sql中where子句条件的动态数

时间:2014-11-04 20:00:48

标签: c# linq-to-sql

我正在尝试在数据表中搜索具有任何单词列表的所有条目。该列表可以具有可变数量的单词。这是我现在的代码:

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();

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ中的Intersect,类似于:

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