gpt4 book ai didi

mysql - 不支持指定的方法 MySql Entity Framework 6

转载 作者:行者123 更新时间:2023-11-29 04:00:50 25 4
gpt4 key购买 nike

我正在尝试从 MySQL 客户端运行以下 Linq 查询

    query = query.Where(c => c.CustomerRoles
.Select(cr => cr.Id)
.Intersect(customerRoleIds)
.Any()
);

这段代码看起来没问题,但给出了错误:

System.NotSupportedException: Specified method is not supported.at MySql.Data.Entity.SqlGenerator.Visit(DbIntersectExpression expression)

在我看来,这像是 .Intersect 的问题。谁能告诉我这个错误的原因以及如何解决它?

最佳答案

我认为@GertArnold 的帖子是正确且最好的答案,但我想知道你为什么得到 NotSupportedException然而 ?所以问题不应该来自intersect可能吧。

customerRoleIds 在哪里来自 ?是吗IQueryable<T>

打破查询,逐步完成。

如果你在这行没有得到异常:

var a = query.Select(c => new { 
c,
CustomerRoleIDList = c.CustomerRoles.Select(cr => cr.Id).AsEnumerable()
})
.ToList();

var b = customerRoleIds.ToList();

你必须通过这个得到结果:

var b = query.Where(c => c.CustomerRoles.any(u => customerRoleIds.Contains(u.Id)))
.ToList();

如果你通过上面的查询得到异常,你可以尝试这个最终的解决方案来首先获取数据,但请注意,所有数据将首先在内存中获取:

var a = query.Select(c => new { 
c,
CustomerRoleIDList = c.CustomerRoles.Select(cr => cr.Id).AsEnumerable()
})
.ToList();

var b = a.Where(c => c.CustomerRoleIDList.any(u => customerRoleIds.Contains(u)))
.Select(u => u.c)
.ToList();

关于mysql - 不支持指定的方法 MySql Entity Framework 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23308394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com