我正在創建一個具有服務層(WCF網站)和Silverlight 4客戶端的應用程序。 RIA服務不是一種選擇,所以我們創建中介類來回傳遞。爲了這個問題的目的,讓我們假設我來回傳遞美味Food
對象。實體框架選擇不帶.ToList()的新POCO
public class FoodData
{
public int Id { get; set; }
public string Name { get; set; }
public Tastyness TastyLevel { get; set; }
}
的EF模型本質上是同一個班級,有三個基本字段(Tastyness是對應於我們的枚舉Tastyness一個int)的表。
我發現自己使用這種說法有很多做實體框架查詢時:
public List<FoodData> GetDeliciousFoods()
{
var deliciousFoods = entities.Foods
.Where(f => f.Tastyness == (int)Tastyness.Delicious)
.ToList() // Necessary? And if so, best performance with List, Array, other?
.Select(dFood => dFood.ToFoodData())
.ToList();
return deliciousFoods;
}
沒有.ToList()調用我得到一個異常有關LINQ不能夠自定義的方法轉換到查詢等價,我理解。
我的問題是關於調用.ToList()的。選擇(...)與自定義擴展之前,我們的對象轉換爲食品對象的POCO版本。
是否有更好的模式可以在這裏執行,或者甚至可以更好地替代.ToList(),因爲我並不真的需要列表< ..> result的功能。
是的。你的第一個例子,直接投影,確實非常美味。 – 2011-03-03 23:08:16
非常好,那正是我想要得到更好的解釋。在我的情況下,我使用數據傳輸對象(FoodData)中的對象的所有字段,所以SQL可能沒有太多改進。這個信息將決定我從現在開始如何查詢實體集合。 – Jacob 2011-03-04 01:28:59
加1使用AsEnumerable() – mhand 2015-03-11 21:27:52