以下是我的硬件类的一部分:
public class Hardware
{
public int Id { get; set; }
public virtual ICollection<HardwareType> HardwareType { get; set; }
....
}
在播种的样本数据中,硬件是这样(部分地)新建的:
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
传递给我的视图?
答案 0 :(得分:0)
我只是在ICollection是字符串类型而不是自定义类型的情况下完成此操作,但同样的解决方案可能对您有用。你还没有分享你对HardwareType的定义,所以我的语法可能不是100%正确,但它应该给你一个想法。
public ActionResult Index() {
HardwareType hwt = new HardwareType { HType = "PC" };
Hardware Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));
}
这应该为您提供在定义时具有关联的HardwareType的所有硬件对象。再一次,我只用简单的字符串完成了这个,但我认为它也会这样工作。
这是一个类似的问题,可能会有所帮助:How to do an "in" query in entity framework?