如何在LINQ中将“ int”数据类型项转换为“ string”并使用“ Contains”在字符串列表中进行搜索?

我正在研究一个使用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非常感谢您提出的检查可为空的想法。

xiaozhongqi1996 回答:如何在LINQ中将“ int”数据类型项转换为“ string”并使用“ Contains”在字符串列表中进行搜索?

在将S.ID转换为字符串后,如下面的示例所示,请检查此内容 PossibleUnits.Contains(s.ID.ToString())

,

在我看来s.ID是可为空的,这意味着您应该将其更改为:

where possibleUnits.Contains(SqlFunctions.StringConvert((double)s.ID.Value).Trim())

请注意,这不会检查s.ID是否为null,因此您需要自己进行操作。

本文链接:https://www.f2er.com/3168782.html

大家都在问