2011-05-15 159 views
2

我在下面有一個查詢。雖然任何人都可以指出「從p」是什麼意思?還有「var r」?Linq to SQL簡要問題

DataClasses1DataContext db = new DataClasses1DataContext(); 
      var r = from p in db.Products 
        where p.UnitPrice > 15 // If unit price is greater than 15... 
        select p; // select entries 

回答

3

r是合成查詢 - IQueryable<Product>或類似;請注意查詢尚未執行 - 它是只是一個掛起的查詢。 var的意思是「編譯器,從右邊的表達式中找出r的類型」。你可以在這種情況下明確表示,但不是全部。但它不會增加任何價值,所以var是好的。

p是每種產品的便利標記;查詢是「針對每個產品(P),限制到那些單價大於15(where p > 15),選擇產品(select p)作爲結果

最終編譯如下:

IQueryable<Product> r = 
    db.Products.Where(p => p.UnitPrice > 15); 

(在這種情況下,最終.Select(p => p)被編譯器忽略,但有非平凡投影,或瑣碎查詢時,.Select(...)保留)

+0

謝謝,很好的回答! – James 2011-05-15 15:14:25

1

p裝置(db.Products)引用的集合中的每個特定項。請參閱MSDN上的from

var是語法糖 - 它解析爲從LINQ查詢返回的類型,將該類型指定給變量r。請參閱MSDN上的var

爲了更好地理解LINQ,我建議通過101 LINQ Samples來閱讀。

0

from p指從db.Product任何記錄和var R表示的collection of p

整體整個語句是指給我所有的記錄(P)從db.Products其中p.UnitPrice大於15

看到this問題了解更多約var