gpt4 book ai didi

linq - 无法创建常量值 - 仅允许原始类型或枚举类型

转载 作者:行者123 更新时间:2023-12-03 22:24:46 25 4
gpt4 key购买 nike

我在这里看到了一些与此异常相关的问题,但没有一个让我理解问题的根本原因。所以这里我们还有一个......

var testquery = 
((from le in context.LoanEMIs.Include("LoanPmnt")
join lp in context.LoanPmnts on le.Id equals lp.LoanEMIId
where lp.PmntDtTm < date && lp.IsPaid == false
&& le.IsActive == true && lp.Amount > 0
select new ObjGetAllPendingPmntDetails
{
Id = lp.Id,
Table = "LoanEMI",
loanEMIId = lp.LoanEMIId,
Name = le.AcHead,
Ref = SqlFunctions.StringConvert((double)le.FreqId),
PmntDtTm = lp.PmntDtTm,
Amount = lp.Amount,
IsDiscard = lp.IsDiscarded,
DiscardRemarks = lp.DiscardRemarks
}).DefaultIfEmpty(ObjNull));

List<ObjGetAllPendingPmntDetails> test = testquery.ToList();

此查询给出以下异常消息 -

Unable to create a constant value of type CashVitae.ObjGetAllPendingPmntDetails. Only primitive types or enumeration types are supported in this context.

在添加 SQL 函数语句以将 le.FreqId 转换为 bytestring 后,我得到了这个异常 ToString() 在 LINQ 表达式存储中无法识别。

ObjGetAllPendingPmntDetails 是我模型中的一个部分类,添加它是因为它在代码中使用了太多次,无法将数据绑定(bind)到表。它有两个 ID 一样长,'Amount' 是十进制,PmntDtTmDatetimeIsDiscard 是 bool 和剩下的都是字符串,包括'Ref'。

我没有得到任何结果,因为目前没有数据满足条件。在尝试处理 null 时,我添加了 DefaultIfEmpty(ObjNull) 并且 ObjNull 具有如下初始化的所有属性。

ObjGetAllPendingPmntDetails ObjNull = new ObjGetAllPendingPmntDetails()
{ Id = 0, Table = "-", loanEMIId = 0, Name = "-", Ref = "-",
PmntDtTm = Convert.ToDateTime("01-01-1900"),
Amount = 0, IsDiscard = false, DiscardRemarks = "" };

我需要这个查询正常工作,因为它有 Union() 调用它和其他 5 个查询。全部返回相同的 ObjGetAllPendingPmntDetails 列。但是有一些问题,因为这个查询没有满足条件的数据和上面共享的异常。

感谢任何建议,因为我无法理解问题的根本原因。

最佳答案

@AndrewCoonce 是对的,.DefaultIfEmpty(ObjNull) 是这里的罪魁祸首。 Entity Framework 将 DefaultIfEmpty 变成类似...

CASE WHEN ([Project1].[C1] IS NULL) THEN @param ELSE [Project1].[Value] END AS [C1]

...但是没有办法将 ObjGetAllPendingPmntDetails 的实例强制转换为可以代替 @param 的实例,因此您会遇到异常。

如果您将 DefaultIfEmpty 调用移动到 ToList 之后,它应该可以正常工作(尽管您需要在此之后再次调用 ToList如果你真的想要一个具体的列表实例)。

关于linq - 无法创建常量值 - 仅允许原始类型或枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17811099/

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