如何在Linq to Entities中编写此查询:
select convert(datetime,data,103) from Audit where ActionId = 1
列数据是varchar(max)类型。我知道如果ActionId连续等于一行,那么行中的Data列将始终包含一个表示dd / MM / yyyy格式的日期的字符串。
更新:
我需要将L2E查询的结果作为IQueryable返回,因为在它之上应用了分页/排序。这是另一个原因,为什么我希望这个字段作为DateTime
返回 - 能够对其进行排序。
答案 0 :(得分:0)
在客户端而不是服务器上格式化会更容易吗?
我会做这样的事情:
var audits = db.Audit
.Where(arg => arg.ActionId == 1)
.Select(arg => new { arg.Data })
.AsEnumerable()
.Select(arg => DateTime.ParseExact(arg.Data, "dd/MM/yyyy", CultureInfo.InvariantCulture)
.ToList();
将以字符串格式检索数据
检索字符串后,它们将转换为DateTime
。
答案 1 :(得分:0)
我发现了这个:Convert String to Int in EF 4.0如果我们创建一个将字符串转换为日期时间的函数,它看起来就像这个技巧可能会有所帮助。
<强>更新强> 这个问题对我来说没有解决。由于我需要一个快速的解决方案,我将'data'列转换为datetime类型。这对于将来的扩展并不通用,但它现在可以使用。其中一个解决方案并非真正的解决方案。