LINQ等效于T-SQL查询

时间:2012-08-29 08:40:32

标签: asp.net-mvc-3 sql-server-2008 entity-framework-4

我有列表:

ID(int), Ano(varchar), Bno(varchar), StartTime(DateTime), EndTime(DateTime)

此SQL查询的等效LINQ语句是什么:

 SELECT 
    StartTime, EndTime, Ano, Bno,  
    datediff(s, StartTime, EndTime) as duration 
 FROM 
    TABLENAME 
 where 
    StartTime >= 'value Input by user' 
    and StartTime <= 'value INPUT by user' 
 order by 
    StartTime desc

在这里,我如何选择持续时间转换为值到分钟。以分和秒计算所有记录的持续时间

2 个答案:

答案 0 :(得分:2)

DateTime startTime = <Startime given by user>;
DateTime endTime = <Endtime given by user>;

var result = 
yourSource
  .Where (m => m.StartTime >= startTime && m.StartTime<= endTime)
  .OrderByDescending(m => m.StartTime)
  .Select(m => new {
     startTime = m.StartTime,
     endTime = m.EndTime,
     ano = m.Ano,
     bno = m.Bno,
     duration = SqlFunctions.DateDiff("mi", m.StartTime, m.EndTime)
});

顺便说一下,你也可以在没有持续时间的情况下得到结果,并在检索结果后计算它(以避免使用anon)

类似的东西:

var duration = (EndTime - StartTime).Minutes;

答案 1 :(得分:1)

匹配以下代码:

var result = from Entityname in EntityListName
    where Entityname.StartTime >= 'value Input by user' etc ...
    orderby Entityname.StartTime descending 
    select Entityname;