似乎无法将 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();
上面的查询假设PatientId
是String
但错误提示 LINQ to Entities does not recognize the method 'System.String ToString(**Int32**)' method
表示PatientId
是Int
。
那就试试下面的代码
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)”方法,并且该方法无法转换为存储表达式 [重复]