我有以下代码:
var data = (from v in this.GetSession().Query<WorkCellLoadGraphData>()
where v.WorkCellId == "13"
select
new WorkCellLoadGraphData
{
RowId = v.RowId,
WorkCellId = v.WorkCellId,
WorkCellName = v.WorkCellName,
WorkCellGroupId = v.WorkCellGroupId,
WorkCellGroupName = v.WorkCellGroupName
});
return data.Distinct();
如果我不调用Distinct()扩展方法,我没有任何问题。但是,如果我调用Distinct()方法,我会收到以下错误:
不支持表达式类型10005 通过这个SelectClauseVisitor。
经过一番搜索,我发现了这个:
但是你可以看到我没有回复匿名类型。
还有其他人遇到过这个问题吗?如果是这样,你是如何解决的?
大卫
答案 0 :(得分:0)
这可行吗?通过在查询中使用匿名类型,您将允许NHibernate在数据库中创建不同的查询。使用您自己的类型时,必须将比较与“Equals
方法”一起使用。
var data = (from v in this.GetSession().Query<WorkCellLoadGraphData>()
where v.WorkCellId == "13"
select
new
{
v.RowId,
v.WorkCellId,
v.WorkCellName,
v.WorkCellGroupId,
v.WorkCellGroupName
})
.Distinct()
.Select (v =>
new WorkCellLoadGraphData{
RowId = v.RowId,
WorkCellId = v.WorkCellId,
WorkCellName = v.WorkCellName,
WorkCellGroupId = v.WorkCellGroupId,
WorkCellGroupName = v.WorkCellGroupName});