一个简单的例子
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;
答案 0 :(得分: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();
它将返回原始鉴别器,这不是理想的,但它可以工作。