我在这里看到了一些与此异常相关的问题,但没有一个让我了解问题的根本原因。所以这里我们还有一个...
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();
此查询给出以下异常消息 -
无法创建类型的常量值
CashVitae.ObjGetAllPendingPmntDetails
。此上下文仅支持原始类型或枚举类型。
le.FreqId
在添加 SQL 函数语句以将其转换为LINQ 表达式存储中无法识别的byte
a后,我得到了这个异常。string
ToString()
ObjGetAllPendingPmntDetails
是我的模型中的一个部分类,由于它在代码中用于将数据绑定到表的次数过多而被添加。它既有ID
s 长,'Amount' 为十进制,PmntDtTm
as Datetime
,IsDiscard
为 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
列。但是存在一些问题,因为这个查询没有满足条件的数据和上面共享的异常。
感谢任何建议,因为我无法理解问题的根本原因。