2012-08-29 113 views
0

我有表列:LINQ相当于一个T-SQL查询

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 

在这里,我怎么能选择持续时间转换以价值分钟。计算总的分钟中的所有记录,秒

+1

无论你使用**实体˚F ramework **作为您的ORM - 或者您正在使用** Linq-to-SQL **,但不能同时使用两者。你真的在使用哪一个? –

+0

实体框架4数据库第一 – CodeManiac

回答

1

比赛时间的下面的代码:

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

我们可以在select中添加datediff() – CodeManiac

+0

您需要类似但AFAIK之间的东西,您必须正常比较gt> =和lt <=。 – CloudyMarble

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) 
}); 

顺便问一下,你也可以得到结果没有时间和检索后计算它结果(避免匿名)

喜欢的东西:

var duration = (EndTime - StartTime).Minutes;