English 中文(简体)
如何在DLINQ中对项列表执行Contains()操作?
原标题:
  • 时间:2009-03-03 03:36:40
  •  标签:

我想建立一个dlinq查询,检查标题中是否有任何数量的项。我知道您可以使用 .Contains()查询列表,但我需要检查标题是否包含任何项,而不是项是否包含标题的一部分。例如:我列表中有三个项目“培根,鸡肉,猪肉”。我需要“鸡屋”的标题匹配。

   var results = (from l in db.Sites
   where list.Contains(l.site_title)
   select l.ToBusiness(l.SiteReviews)).ToList();

如果我尝试前两个答案,我会得到一个错误代码:“除了Contains()运算符外,在LINQ to SQL实现的查询运算符中无法使用本地序列。”

第三个解决方案给了我。

该方法 System.Object DynamicInvoke(System.Object[]) 没有支持的 SQL 翻译。

最佳回答

我终于想出来了。感谢我的好朋友Cory的帮助。有两种方法可以做到。

var resultSets = (from k in list
                  select (from b in db.Sites
                          where b.site_title.Contains(k)
                          select b.ToBusiness()).ToList<Business>()).ToList();

 List<Business> all = new List<Business>();

 for (int i = 0; i < resultSets.Count; ++i)
 {
     all.AddRange(resultSets[i]);
 }

这是一个Linq查询,将成功执行所述操作。此外,您也可以手动建立纯文本的SQL查询。

问题回答

请尝试以下方法。您可以同时使用Where和Any来搜索子字符串匹配。

var results = (from l in db.Sites
                where list.Where(x => 0 != x.IndexOf(l)).Any()
                select l.ToBusiness(l.SiteReviews)).ToList();

一种方法是根据这里提供的指南动态构建查询:

将此翻译成中文:http://andrewpeters.net/2007/04/24/dynamic-linq-queries-contains-operator/





相关问题
热门标签