繁体   English   中英

无法创建类型为“结算类型”的常量值。 在这种情况下,仅支持基本类型(例如Int32,String和Guid)

[英]Unable to create a constant value of type 'Closure type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context

我在SQL Server中具有表名称OtherEarningandDeduction,并且列很少

    columns         dataType  
1). Id              guid     as primary key.
2). SalaryHeadId    guid     as FK.
3). Month           varchar 
4). AcademicYearId  guid     as FK
5). .....
6). .....
7). .....

我想检查表中是否存在相同的记录,所以我在asp.net中使用Linq。 并限制为表中存在的那些记录插入记录。

经理是实体的对象。

OtherEarningandDeduction obj =new OtherEarningandDeduction();


var dublicateCheck=manager.OtherEarningandDeduction.where(x=>x.SalaryHeadId==obj && x.month==obj.month && x.AcademicYearId==obj.AcademicYearId).toList();

我在上面的行中收到错误...

无法创建类型为“结算类型”的常量值。 在这种情况下,仅支持基本类型(例如Int32,String和Guid)。

所以请帮助我...

我不确定100%,但是我认为问题是因为您将x.SalaryHeadIdobj而不是obj.SalaryHeadId进行比较。

我认为这会起作用:

var dublicateCheck=manager.OtherEarningandDeduction.where(x=>x.SalaryHeadId==obj.SalaryHeadId && x.Month==obj.Month && x.AcademicYearId==obj.AcademicYearId).toList();

在您的代码中,您试图将xSalaryHeadId属性(字段)与实例化的对象进行比较,而不是将实例化对象的SalaryHeadId属性(字段)进行比较。 因此,错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM