我想建立一个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转换。”
我终于弄明白了。感谢我的好伙伴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();