【发布时间】:2015-03-25 15:32:10
【问题描述】:
我有下一个查询
var query = (from titles in db.Titles
join ratings in db.Ratings on titles.Rating equals ratings.Rating1
join synopsis in db.Synopsis on titles.Certificate equals synopsis.Certificate into items
from item in items.DefaultIfEmpty()
where titles.Rating_Release_Date >= DateTime.Parse(fromDate) &&
titles.Certificate < 1000000 &&
platformElements.Any(r => titles.Platforms.Contains(r)) && //here i get error Local sequence cannot be used in LINQ to SQL implementations of query operators except the Contains operator.
ratingElements.Any(r => titles.Rating.Contains(r))
orderby titles.Rating_Release_Date descending, titles.Submission_Title
select new {...}
但是当我尝试检查字段(titles.Platforms)是否包含集合中的任何项目时出现错误。
本地序列不能在查询运算符的 LINQ to SQL 实现中使用,但 Contains 运算符除外。
现在我不知道如何正确地制作 where 子句。 第一个想法 - 在循环中检查平台是否包含列表中的项目,但也不知道如何实现它。
我找到了这篇文章How do I use LINQ Contains(string[]) instead of Contains(string),但我认为自定义扩展不适用于我的情况。其他答案是这样的:platformElements.Contains(titles.Platforms) 这不是我需要的。
titles.Platforms 的类型是 string。
platformElements 的类型是string[];
【问题讨论】:
-
@user3444160,在我的情况下,这不是一个好的解决方案,因为 where 子句在过滤方面做了大量工作,因为我有很多数据
标签: c# sql linq linq-to-sql