我收到以下异常[重复]
Posted
技术标签:
【中文标题】我收到以下异常[重复]【英文标题】:I am getting the following exception [duplicate] 【发布时间】:2013-10-21 02:55:07 【问题描述】:net,我正在.net 中开发应用程序。
我收到以下错误,我不知道我的代码有什么问题
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
这是我出现异常的代码。
public List<ToureDeieselBean> loadDeiselListOnTourUpDownId(int tourUpDownId)
return (from p in context.tb_tourDiesel
where p.deleted == 0
where p.tourUpDownId == tourUpDownId
select new ToureDeieselBean
id = p.id,
qty =(float)p.qty,
ratePerlt = (float)p.ratePerlt,
createdBy = p.createdBy,
createdOn = p.createdOn==null?"":(p.createdOn).ToString(),
updatedBy = p.updatedBy,
updatedOn = p.updatedOn == null ? "" :(p.updatedOn).ToString(),
descrption=p.descrption,
deleted=Convert.ToBoolean(p.deleted)
).ToList<ToureDeieselBean>();
【问题讨论】:
将createdOn
和 updatedOn
更改为 DateTime 类型,不要使用 ToString()
(这不适用于所有 Linq 提供程序)
您可以毫无问题地使用方法语法。恕我直言,LINQ 无法识别查询 sntax 中的 ToString()。
@ Joachim Isaksson 如果我将 createdOn 和 updatedOn 更改为 DateTime 那么它不接受空值
然后使用DateTime?
。顺便说一句:您可能还必须更改deleted
的类型,因为Convert.ToBoolean
很可能会引发下一个异常。
@Slauma yes deleted 之前也抛出异常,但如何解决。
【参考方案1】:
您可以使用null coalescing operator 删除ToString
和更长的三元运算符:
public List<ToureDeieselBean> loadDeiselListOnTourUpDownId(int tourUpDownId)
return (from p in context.tb_tourDiesel
where p.deleted == 0
where p.tourUpDownId == tourUpDownId
select new ToureDeieselBean
id = p.id,
qty =(float)p.qty,
ratePerlt = (float)p.ratePerlt,
createdBy = p.createdBy,
createdOn = p.createdOn ?? "",
updatedBy = p.updatedBy,
updatedOn = p.updatedOn ?? "",
descrption=p.descrption,
deleted=Convert.ToBoolean(p.deleted)
).ToList<ToureDeieselBean>();
【讨论】:
【参考方案2】:当您使用 EF LINQ 查询被转换为 SQL,并且当您在 LINQ 中使用 SQL 中不存在的此类方法时,您会收到此异常。
这将起作用:
var temp=(from p in context.tb_tourDiesel
where p.deleted == 0
where p.tourUpDownId == tourUpDownId).ToList<ToureDeieselBean>();
return (from p in temp
select new ToureDeieselBean
id = p.id,
qty = (float)p.qty,
ratePerlt = (float)p.ratePerlt,
createdBy = p.createdBy,
createdOn = p.createdOn == null ? "" : (p.createdOn).ToString(),
updatedBy = p.updatedBy,
updatedOn = p.updatedOn == null ? "" : (p.updatedOn).ToString(),
descrption = p.descrption,
deleted = Convert.ToBoolean(p.deleted)
).ToList();
【讨论】:
以上是关于我收到以下异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在JSch中不断收到Auth失败异常,但我能够在没有密码的情况下ssh到IP [重复]