2009-06-23 63 views
3

這是我有:什麼是Lambda表達式中SQL WHERE的等價關係?

decimal sum = _myDB.Products.Sum(p => p.Price).GetValueOrDefault(); 

我也有兩個日期:DateTime startDateTime end
我想檢索所有的開始和結束之間的產品價格的總和,但我無法弄清楚如何將變量納入lambda方程。

如何將變量合併到lambda方程中以給出一些規範?

回答

11

使用Enumerable.Where

decimal sum = _myDB.Products 
        .Where(p => (p.Date >= start) && (p.Date <= end)) 
        .Sum(p => p.Price) 
        .GetValueOrDefault(); 
+6

同意在實施方面,但像這樣的查詢是多條線路更清晰了很多。排列點:) – 2009-06-23 19:04:59

+0

格式化的好處 - 爲了一致性,我堅持使用原始問題的格式化方法,但這是我通常在自己的代碼中編寫的方式。 – 2009-06-23 19:06:39

+0

@Jon:完成。直到現在纔看到您的評論。 – 2009-06-23 19:07:00

0
_myDB.Products 
.Where(p => p.start >= "somevalue") 
.Where(p => p.end <= "somevalue") 
.Sum(p => p.Price).GetValueOrDefault(); 
1
decimal sum = _myDB.Products 
.Where(p => p.Start >= mystartDate && p.End <= myenddate) 
.Sum(p => p.Price) 

原諒我的語法。但是,我希望你明白這個主意。

編輯:糾正後,裏德的建議。
舊代碼(不正確)

decimal sum = _myDB.Products 
.Sum(p => p.Price) 
.Where(p => p.Start >= mystartDate && p.End <= myenddate) 
相關問題