2010-02-25 61 views
4

Linq to SQL中可以在SQL中執行此操作嗎?Linq2SQL之間

Select field from table where date between '2010-01-01' and '2010-01-31'; 

我知道我可以做的:

where (monthBeginDate < a.StopDateActual && a.StopDateActual < monthEndDate) 

不過我很好奇,如果我能做到前者。我有一個糟糕的習慣,搞砸了小於和大於這樣的陳述。

+0

Dupe:http://stackoverflow.com/questions/1447635/linq-between-operator – tvanfosson 2010-02-25 19:54:18

+1

那裏的解決方案非常詳細 – 2010-02-25 19:56:18

+0

對不起,我不明白這是同一個問題。這對我來說看起來是一個不同的問題。我認爲我的更直接的問題。這似乎比我更需要問。 – 2010-02-25 19:57:01

回答

4

不,這是做到這一點的方法。我相信C#沒有一個運算符。

你總是可以欺騙和編寫擴展方法,像我這樣做:

public static bool BetweenDates (this DateTime checker, DateTime floor, DateTime ceiling) 
{ 
    return (checker <= ceiling) && (checker >= floor); 
} 

然後你就可以做到這一點;-)

.Where(s => s.StopDateActual.BetweenDates(monthBeginDate, monthEndDate)); 
+0

不是,它沒有操作符之間。 – AxelEckenberger 2010-02-25 19:59:42

+0

這並不重要。我只是覺得我可能錯過了一些東西。很高興看到我不是。 – 2010-02-25 20:00:07

+1

有性能問題,請參閱我的回答... – AxelEckenberger 2010-02-25 20:04:03

5

你可以做到以下幾點:

public bool Between(DateTime value, DateTime from, DateTime To) { 
    return value > from && value < to; 
} 

where Between(a.StopDateActual, monthBeginDate, monthEndDate) 

但是,您應該注意,這適用於IEnumerable而不是IQueryable,即i。 e。結果將在應用位置之前從數據源中提取。這可能是一個性能問題,在大量數據的情況下,因此,你的where clasue是最好的,你可以做...只要注意>和< !!!

+0

+1好評 – 2010-02-25 20:05:39