【发布时间】:2014-11-12 20:44:02
【问题描述】:
我们的数据库中有一个存储年份和月份的表,每个表都是一个字符。现有的 Linq to Entity 查询如下所示:
from mc in repository.table.AsQueryable()
orderby mc.Year descending, mc.Month descending
select mc).FirstOrDefault()
这个问题是它是按字符串而不是 int 排序的,导致查询返回的行不正确。我试图将年份和月份转换为 int 和 datetime,都抛出一个错误说:
“LINQ to Entities 无法识别方法 'System.DateTime ToDateTime(System.String)' 方法,并且该方法无法转换为存储表达式。”
(from mc in repository.table.AsQueryable()
orderby mc.Year descending, Convert.ToDateTime(mc.Month) descending
select mc).FirstOrDefault()
或
“LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且该方法无法转换为存储表达式。”
(from mc in repository.table.AsQueryable()
orderby mc.Year descending, Convert.ToInt32(mc.Month) descending
select mc).FirstOrDefault();
如您所见,我不能先将月份和年份转换为 INT,因为它使用的是表中的数据,而不是外部数据。
PS:我无权更改表格以使两列为 INT。
有人知道如何处理吗?
【问题讨论】:
标签: c# linq casting linq-to-entities