2

E次のような特定のタイプのオブジェクトを持つホストオブジェクトを取得しようとしています。

return Session.Query<Host>().Where(x => x.E is B).ToList();

これはおそらくEがタイプAであり、BがAから継承しているために機能していないようです。継承が問題である可能性があります。さらにいくつかの(簡略化された)詳細:

class Host
{
    public A E { get; set; }
}

class B : A
{

}

上記が機能しない理由はありますか?ありがとう。

PS:

上記が機能することに注意してください-私は間違ったクラス名を使用しました!

4

1 に答える 1

1
return Session.Query<Host>().Where(x => x.E.GetType().Equals(typeof(B)).ToList();

このコードはLinqPadで機能します。

void Main()
{
    var x = new Host { E = new B() };

    Console.Write(x.E.GetType().Equals(typeof(B)));
}

class A { }
class B : A { }
class Host { public A E { get; set; } }
于 2013-02-05T11:32:06.993 に答える