C#实体框架String Canonical Functions

时间:2016-07-01 12:00:22

标签: c# sql sql-server entity-framework

如何在实体框架查询中使用Right函数? 我有这个SQL查询

SELECT RIGHT('0' + '4'), DATEDIFF(MINUTE, DateReceived, GETDATE()) % 60), 2)  
FROM mytable //RESULTS = 04

如果传递的字符串长度小于2,Right函数将基本上添加0

现在我想在实体框架查询中做同样的事情:

var query = (from b in sovDB.myTable
select new
{
    myMinutes = Right("0"+ (SqlFunctions.DateDiff("MINUTE", b.DateReceived,  
    SqlFunctions.GetDate()) % 60),2)
}).ToList();

但它不起作用,不知道{@ 1}}函数不支持。

2 个答案:

答案 0 :(得分:2)

将旧存储过程转换为实体时遇到了同样的问题。我使用了SqlFunctions.Replicate来完成这个技巧,实体框架没有任何抱怨!

var query = (from b in sovDB.myTable
select new
{
    myMinutes = SqlFunctions.Replicate("0", 2 - (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60).Length) + (SqlFunctions.DateDiff("MINUTE", b.DateReceived, GetDate()) % 60)
}).ToList();

答案 1 :(得分:0)

尝试将计算出的分钟显式转换为字符串:

maps.googleapis.com/maps/api/js