linq 中的 Intersect 或 Except 方法在 MYSQL 中不起作用
Intersect or Except methods in linq not working in MYSQL
我正在使用 entity framework 和 mysql。我必须在其中一个查询中使用 Intersect,但它会抛出错误“不支持指定的方法。”。除了将数据存入内存并在其上应用 Intersect 之外,任何人都可以提出替代方案吗?
public List<share> GetFeed(List<long> UserRules, List<long> ListedShares, string AuthorID)
{
List<share> listshare = DbContext
.shares
.Where(x => UserRules.Intersect(x.share_rules.Select(y => y.rule_id)).Any())
.ToList();
return listshare;
}
不支持指定的方法。 表示 EntityFramework 无法将其转换为 SQL 查询。实际上,在大多数情况下,可以将其转换为支持的Contains
。你应该改变你的方法来匹配:
public List<share> GetFeed(List<long> UserRules, List<long> ListedShares, string AuthorID)
{
List<share> listshare = DbContext
.shares
.Where(x => x.share_rules.Any(y => UserRules.Contains(y.rule_id)))
.ToList();
return listshare;
}
我正在使用 entity framework 和 mysql。我必须在其中一个查询中使用 Intersect,但它会抛出错误“不支持指定的方法。”。除了将数据存入内存并在其上应用 Intersect 之外,任何人都可以提出替代方案吗?
public List<share> GetFeed(List<long> UserRules, List<long> ListedShares, string AuthorID)
{
List<share> listshare = DbContext
.shares
.Where(x => UserRules.Intersect(x.share_rules.Select(y => y.rule_id)).Any())
.ToList();
return listshare;
}
不支持指定的方法。 表示 EntityFramework 无法将其转换为 SQL 查询。实际上,在大多数情况下,可以将其转换为支持的Contains
。你应该改变你的方法来匹配:
public List<share> GetFeed(List<long> UserRules, List<long> ListedShares, string AuthorID)
{
List<share> listshare = DbContext
.shares
.Where(x => x.share_rules.Any(y => UserRules.Contains(y.rule_id)))
.ToList();
return listshare;
}