0

簡単な例

abstract class Car
{
    public virtual long SerialNumber { get; set; }
}

class Mercedes : Car { }

class Fiat : Car { }

class Toyota : Car { }

今、私は車から継承するタイプが在庫にあるかどうかを照会したいと思います。これを行う方法?または私のデザインに欠陥があります。

session.Save(new Mercedes() { SerialNumber = 1 });
session.Save(new Mercedes() { SerialNumber = 2 });
session.Save(new Toyota() { SerialNumber = 1 });

// later
var models = session2.Query<Car>().SelectDistinct(car => car.GetType().Name);

showModelComboBox.Items = models;
4

1 に答える 1

1

私が見ることができるものから、次の作品があります:

var models = session.Query<Car>().Select(x => x.GetType().Name).ToList();

...後で適用できますDistinct...しかし、実際にはエンティティ全体をフェッチしています。良くない。

Distinct式に適用できないようですGetType

これで、次のことができます。

var models = session.CreateQuery("select c.class from Car c").List();

生のディスクリミネーターが返されますが、これは理想的ではありませんが、機能します。

于 2012-07-19T15:47:54.000 に答える