0

一个简单的例子

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

class Mercedes : Car { }

class Fiat : Car { }

class Toyota : Car { }

现在我想查询从 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 回答