似乎无法将 int 转换为 linq 表达式中的字符串 [重复]

Posted

技术标签:

【中文标题】似乎无法将 int 转换为 linq 表达式中的字符串 [重复]【英文标题】:Cant seem to convert int to a string within linq expression [duplicate] 【发布时间】:2018-06-23 00:15:18 【问题描述】:

我在以下过程中收到以下错误

public Patient getPatientByPatientId(int PatientID)

    Patient patient = new Patient();
    if (PatientID == -1)
    
       patient = new Patient();
    
     else
    
       using (var myContext = new SMBASchedulerEntities(this.Connectionstring))
        
                patient = myContext.Patients
               .Where(w => w.PatientID == Convert.ToString(PatientID)).FirstOrDefault();
         
        
        return patient;

错误是

发生了“System.NotSupportedException”类型的未处理异常 在 EntityFramework.SqlServer.dll 中

附加信息:LINQ to Entities 无法识别该方法 'System.String ToString(Int32)' 方法,而这个方法不能 翻译成商店表达式。

【问题讨论】:

改用PatientID.ToString() 你的Patient.PatientID 是一个字符串? 【参考方案1】:

转换你的代码

patient = myContext.Patients.Where(w => w.PatientID == Convert.ToString(PatientID)).FirstOrDefault();

patient = myContext.Patients.Where(w => w.PatientID ==PatientId.ToString()).FirstOrDefault();

上面的查询假设PatientIdString

但错误提示 LINQ to Entities does not recognize the method 'System.String ToString(**Int32**)' method

表示PatientIdInt

那就试试下面的代码

patient = myContext.Patients.Where(w => w.PatientID ==PatientId).FirstOrDefault();

【讨论】:

以上是关于似乎无法将 int 转换为 linq 表达式中的字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to Entities 无法识别方法“Int32 Parse(System.String)”方法,并且该方法无法转换为存储表达式

LINQ to Entities 无法识别“System.String get_Item(Int32)”方法,并且该方法无法转换为存储表达式 [重复]

无法将类型“System.Linq.IQueryable<int>”隐式转换为“int?”

Linq中string转int的方法

方法无法转换为存储表达式(LINQ)[重复]

查询 (LINQ) 表达式无法转换为实体框架核心