无法创建“闭包类型”类型的常量值。在此上下文中仅支持原始类型(例如Int32,String和Guid')

时间:2013-04-19 07:12:39

标签: c#

我在SQL服务器中有表名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')   这个背景。

所以请帮助我...

1 个答案:

答案 0 :(得分:0)

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

我认为这样可行:

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

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