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

发布于 2024-07-14 08:45:42 字数 522 浏览 7 评论 0原文

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

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

如果我尝试前 2 个答案,则会收到错误“本地序列不能在查询运算符的 LINQ to SQL 实现中使用,除了 Contains() 运算符。”

第三个解决方案给了我

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

I want to build a dlinq query that checks to see if a title has any number of items in it. I know you can do .Contains() with a list, but I need to check if the title contains any of the items, not if the items contain part of the title. For example: I have three items in the list "bacon, chicken, pork". I need the title of "chicken house" to match.

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

If I try the first 2 answers, I get an error "Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator."

The third solution gives me

Method 'System.Object DynamicInvoke(System.Object[])' has no supported translation to SQL."

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我要还你自由 2024-07-21 08:45:42

尝试以下操作。 您可以使用Where 和Any 的组合来搜索子字符串匹配项。

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

Try the following. You can use a combination of Where and Any to search for substring matches.

var results = (from l in db.Sites
                where list.Where(x => 0 != x.IndexOf(l)).Any()
                select l.ToBusiness(l.SiteReviews)).ToList();
落日海湾 2024-07-21 08:45:42

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

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

One way is to dynamically build a query as outlined here:

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

傲世九天 2024-07-21 08:45:42

我终于弄明白了。 感谢我的好朋友科里的帮助。 有两种方法可以做到这一点。

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

I finally figured it out. Thanks to my good buddy Cory for the help. There are two ways you can do it.

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]);
 }

This is a linq query that will successfuly do what is stated. As well, you can also just build the sql query in plain text by hand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文