我試圖制定一個LINQ查詢選擇列表的子表,其中符合WHERE條件,像這樣:LINQ鑄造可枚舉特定類型的列表
List<Entities.Base> bases = this.GetAllBases();
List<Entities.Base> thebases = from aBase in bases
where aBase.OfficeCD == officeCD
select aBase;
其中基地僅僅是一個實體類:
public string BaseCD { get; set; }
public string BaseName { get; set; }
public string OfficeCD { get; set; }
public DateTime EffectiveDate { get; set; }
public DateTime ExpirationDate { get; set; }
我得到一個錯誤「無法implictly型System.Collections.Generic.IEnumerable轉換爲System.Collections.Generic.List
於是,我就應用轉換運算符,但失敗了。我現在看到,我不想轉換元素的類型。我該如何解決這個問題?謝謝!
謝謝!我只是想到了一些東西 - 執行。這些查詢在枚舉之前不會執行。我將這些構建到返回查詢的DataLayer中。假設我選擇你的第一個並擁有:public List GetBasesForFieldOfficeCD(string officeCD){List bases = this.GetAllBases(); List thebases =(來自aBase中的基礎,其中aBase.OfficeCD == officeCD選擇aBase).ToList();返回基地; } - 我需要在返回之前枚舉/執行查詢嗎? –
2010-10-22 17:04:13
'ToList()'會爲你做枚舉。最終的結果是:「普通」的數據結構,而不是查詢。基本上,列表不記得它是如何創建的。另一方面,你可能會更喜歡你的'GetBasesForFieldOfficeCD'方法,而不是返回一個延遲執行的查詢。在這種情況下,使返回類型'IEnumerable'並移除對'ToList()'的調用。 –
Ani
2010-10-22 19:45:37