gpt4 book ai didi

c# - Entityframework 错误 : "The type ' . .....' 出现在单个 LINQ to Entities 查询中的两个结构不兼容的初始化中

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:02 29 4
gpt4 key购买 nike

我无法从 linq to Entities 中的 group by 子句生成 IQuerable 结果的值范围。

    IQueryable<Model.MyEntity> query = MyContext.GetDbSet()      
IQueryable<MyObject> query2 = null;
query2 = query.Select(x => new MyObject()
{

GroupingColumn = SqlFunctions.StringConvert(arrayMin.AsQueryable().FirstOrDefault(s => x.Amount > s)) +
"-" + SqlFunctions.StringConvert(arrayMax.AsQueryable().FirstOrDefault(s => x.Amount < s)) ,
CountOfAmountRange = 1,
SumOfAmount = (decimal)x.Amount,
});
query2 = query2.GroupBy(cm => new {cm.GroupingColumn }).Select(y => new MyObject()
{
GroupingColumn =y.Key.GroupingColumn ,
CountOfAmountRange = y.Count(),
SumOfAmount = (decimal)y.Sum(p => p.SumOfAmount)
});

一点背景:我正在开发一个高度结构化的应用程序,它有一个层负责生成查询,稍后将应用于从另一层的上下文中检索数据。我已经成功地使用它生成了许多报告,但是这个特定的报告引发了以下错误。

The type 'MyObject' appears in two structurally incompatible initializations within a single LINQ to Entities query. A type can be initialized in two places in the same query, but only if the same properties are set in both places and those properties are set in the same order.

arrayMax 和 arrayMin 是十进制数组,分别包含最大值和最小值,用于比较和生成 GroupingColumn 的字符串值。

我在 StackOverflow 上看到了几个与此错误相关的问题,但似乎没有一个答案告诉我问题的解决方案。

最佳答案

对于 future 的读者来说,这个 SO 副本(一年后添加)是解决我的问题的关键:

The type appear in two structurally incompatible initializations within a single LINQ to Entities query

当您查看它时,错误消息非常清楚。如果您在同一个 Linq 表达式中多次实例化一个对象,请不要弄乱初始化顺序。对我来说,我有条件地实例化了一个类型,但初始化顺序不同。

关于c# - Entityframework 错误 : "The type ' . .....' 出现在单个 LINQ to Entities 查询中的两个结构不兼容的初始化中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42484298/

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