2011-11-06 72 views
3

我是LINQ查詢和EF的新手,我通常使用MySQL,我無法猜測如何編寫真正簡單的查詢。EF4.1 LINQ,選擇所有結果

我想從表中選擇所有結果。所以,我用這樣的:

ZXContainer db = new ZXContainer(); 
ViewBag.ZXproperties = db.ZXproperties.All(); 

但我看到,我必須在全部(---)內寫東西。

有人能指導我如何做到這一點?如果有人有任何好的參考鏈接,我非常感謝。

回答

6

All()是對集合中所有元素執行的布爾評估(儘管當它到達評估爲false的元素時立即返回false),例如,要確保所有ZXproperties都具有某些字段設置爲true:

bool isTrue = db.ZXproperties.All(z => z.SomeFieldName == true); 

這將使isTrue爲真或假。 LINQ通常是延遲加載,所以如果你直接調用db.ZXproperties,你可以直接訪問所有的對象,但它不是你想要的。您可以用.ToList()加載的所有對象的變量賦值:

ViewBag.ZXproperties = db.ZXproperties.ToList(); 

,或者您可以使用下面的表達式:

ViewBag.ZXproperties = from s in db.ZXproperties 
         select s; 

這實在是沒有什麼不同比說:

ViewBag.ZXproperties = db.ZXproperties; 

.ToList()的優點是,如果你想對這個ViewBag.ZXproperties進行多次調用,它只需要初始化在分配變量時調用數據庫。或者,如果您對數據執行了任何形式的可查詢操作,例如.Where(),則會執行另一個查詢,如果您已經有數據可用,則該查詢不甚理想。

1

要選擇一切,只需跳過.All(...),因爲ZXproperties已經是一個集合。

ZXContainer db = new ZXContainer(); 
ViewBag.ZXproperties = db.ZXproperties; 

您可能希望(或者有時甚至需要)使用之前調用.ToList()在此集合...

0

你不全部採用。只需鍵入

ViewBag.ZXproperties = db.ZXproperties; 

ViewBag.ZXproperties = db.ZXproperties.ToList(); 
0

您可以使用此:

var result = db.ZXproperties.ToList(); 

欲瞭解更多有關LINQ看到101 linq sample

所有是檢查所有項目和參數,所謂的lambda expression

+2

downvoter你應該解釋爲什麼downvoting,因爲我看到你低估了我的答案和Reed Copsey的答案,這兩個答案都是正確的,但這不是一個好辦法。 –

0

All方法用於確定收集的所有項目是否匹配某些條件。

如果你只是想所有的項目,你可以直接使用它:

ViewBag.ZXproperties = db.ZXproperties; 

如果你想要這個,立即進行評估,你可以將其轉換到一個列表:

ViewBag.ZXproperties = db.ZXproperties.ToList(); 

這將迫使它立即穿過電線。

+0

+1;最清楚的一堆。 –