這是我的設備類的一部分:寫Lambda表達式與ASP.NET MVC4/where子句EF CodeFIrst
public class Hardware
{
public int Id { get; set; }
public virtual ICollection<HardwareType> HardwareType { get; set; }
....
}
在這是引晶的採樣數據,硬件被newed像這樣(部分):
new Hardware { ... HardwareType = htype.Where(h => h.HType == "PC").ToArray() }
htype
與各種字符串值的List<HardwareType>
爲HType
,這是在HardwareType
類的屬性。
在我的控制器中,我試圖給一個變量分配一個Lambda表達式,所以我可以在我的視圖中循環它。以下是我有:
private Context db = new Context();
public ActionResult Index() {
Hardware Pcs = db.Hardware.Where(h => h.HardwareType == "PC");
}
但是,編譯器告訴我,我不能這樣做,因爲h.HardwareType
是一個ICollection的。這是有道理的。但是,如何編寫這一行代碼,以便我可以將Pcs
傳遞給我的觀點?
我得到這個錯誤跟你的建議:錯誤無法隱式轉換類型'System.Linq.IQueryable來'CIT.Models.Hardware'。存在明確的轉換(您是否缺少演員?)。建議? –
sehummel
明白了。 'IQueryable Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));' –
sehummel
@sehummel如果你不想返回IQueryable,你可以使用'Hardware Pcs = db.Hardware。其中(h => h.HardwareType.Contains(hwt))。FirstOrDefault();或'列表 Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt))。ToList();'取決於你是否想要一個或多個結果。 –