我正在研究一个使用ASP.net Web表单和使用LINQ的C#实体框架的项目。 我从一个函数中检索“ int”类型数据列表,并使用“ Contains”在另一个字符串列表中检查它。 在那里我用过
'SqlFunctions.StringConvert((double)MY_INT_ITEM).Trim()'
将该int类型项(ID)转换为字符串。 它曾经工作过,但现在我忘记了我是怎么做的。现在,当我尝试这样做时,会出现以下错误,
“无法将类型'System。Nullable`1'转换为'System.Object'。LINQto Entities仅支持转换EDM原语 或枚举类型。”
为什么会出现此错误,我该如何解决?在这里,我附上了我的代码。 谢谢。
public static List<SESAssignmentsType> getNotUplodedUnitDetailsList(List<string> possibleUnits)
{
using (SESEntities db = new SESEntities())
{
var properUnitList = (from s in db.SES_SCHEDULE_LECTURE
join u in db.SES_UNDERGRADUATE_UNIT_DetaILS on s.SCH_UNIT_ID equals u.ID
where possibleUnits.Contains(SqlFunctions.StringConvert((double)s.ID).Trim())
select new SESAssignmentsType
{
ID = s.ID,UNIT_NAME = u.UND_UNIT_NAME + " - " + a.SCH_START_DATE + " - " + a.SCH_START_TIME+ " ( Started " +
SqlFunctions.DateName("day",a.SCH_START_DATE) + "/" + SqlFunctions.StringConvert((double)a.SCH_START_DATE.Value.Month).TrimStart() + "/" + SqlFunctions.DateName("year",a.SCH_START_DATE)
}).ToList();
return properUnitList;
}
}
非常感谢您的帮助。最后,我发现问题是因为在UNIT_NAME中串联的某些值可以为空。 @Rahul Sharma非常感谢您提出的检查可为空的想法。