2012-08-29 110 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;