【问题标题】:Intersect or Except methods in linq not working in MYSQLlinq 中的相交或除外方法在 MYSQL 中不起作用
【发布时间】:2023-03-07 02:41:01
【问题描述】:

我正在使用 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;
}

【问题讨论】:

  • 你能给我们提供一个原始的 MySQL 查询吗?
  • 调试时无法获取原始sql查询:“准备命令定义时发生错误。有关详细信息,请参阅内部异常。”
  • 您需要掌握您尝试运行的实际 MySQL 查询。如果你不会写它,你可能会认为你不知道它。无论如何,如果您可以向我们展示一个查询和一些数据,我们也许可以使用连接或 where 子句来解决相交问题。

标签: mysql entity-framework asp.net-web-api intersect


【解决方案1】:

不支持指定的方法。 表示 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多