0

这是我的硬件课程的一部分:

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给我的视图?

4

1 回答 1

0

我只在 ICollection 是字符串类型而不是自定义类型的情况下这样做过,但是相同的解决方案可能对您有用。你没有分享你对 HardwareType 的定义,所以我的语法可能不是 100% 正确,但它应该给你这个想法。

public ActionResult Index() {

    HardwareType hwt = new HardwareType { HType = "PC" };

    Hardware Pcs = db.Hardware.Where(h => h.HardwareType.Contains(hwt));
}

这应该为您提供所有与您定义相关的 HardwareTypes 的 Hardware 对象。同样,我只用简单的字符串完成了这个,但我认为它也会以这种方式工作。

这是一个可能有用的类似问题: How to do an "in" query in entity framework?

于 2012-12-11T19:07:56.377 回答