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>な文字列値を持つです。HTypeHardwareType

私のコントローラーでは、ラムダ式を変数に割り当てようとしているので、ビューでループできます。ここに私が持っているものがあります:

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 を定義したときに関連付けられたすべてのハードウェア オブジェクトが得られます。繰り返しますが、これは単純な文字列でしか行っていませんが、この方法でも機能すると考えています。

これは役立つかもしれない同様の質問です: エンティティ フレームワークで "in" クエリを実行するにはどうすればよいですか?

于 2012-12-11T19:07:56.377 に答える