如何在L2E查询中表示t-sql转换(日期时间,数据,样式)?

时间:2011-06-16 02:11:03

标签: c# tsql sql-server-2008 entity-framework-4 linq-to-entities

如何在Linq to Entities中编写此查询:

select convert(datetime,data,103) from Audit where ActionId = 1

列数据是varchar(max)类型。我知道如果ActionId连续等于一行,那么行中的Data列将始终包含一个表示dd / MM / yyyy格式的日期的字符串。

更新

我需要将L2E查询的结果作为IQueryable返回,因为在它之上应用了分页/排序。这是另一个原因,为什么我希望这个字段作为DateTime返回 - 能够对其进行排序。

2 个答案:

答案 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类型。这对于将来的扩展并不通用,但它现在可以使用。其中一个解决方案并非真正的解决方案。