繁体   English   中英

如何使用项目列表在DLINQ中执行Contains()?

[英]How do I do a Contains() in DLINQ with a list of items?

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

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

如果我尝试前两个答案,我会收到一个错误"Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator."

第三个解决方案给了我

方法'System.Object DynamicInvoke(System.Object [])'没有支持的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/

我终于弄明白了。 感谢我的好朋友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查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM