1

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

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

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

第三个解决方案给了我

方法 'System.Object DynamicInvoke(System.Object[])' 不支持对 SQL 的转换。”

4

3 回答 3

2

试试下面的。您可以结合使用 Where 和 Any 来搜索子字符串匹配项。

var results = (from l in db.Sites
                where list.Where(x => 0 != x.IndexOf(l)).Any()
                select l.ToBusiness(l.SiteReviews)).ToList();
于 2009-03-03T03:40:42.307 回答
1

一种方法是动态构建查询,如下所述:

http://andrewpeters.net/2007/04/24/dynamic-linq-queries-contains-operator/

于 2009-03-03T06:42:53.477 回答
1

我终于弄明白了。感谢我的好伙伴科里的帮助。有两种方法可以做到。

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 查询。

于 2009-03-04T04:54:03.243 回答