I am using the latest Nhibernate and i have a linq query to return just 1 column. so I can’t use for example IQueryable as there is no entity class – i am returning only 1 column. But return to IQueryable Non Generic version doesn’t provide the ToList method
Here is the method
public IQueryable GetCode()
{
using (ITransaction transaction = _session.BeginTransaction())
{
var results = (from c in _session.Query<Client>()
select new
{
Group = c.Code
}).Distinct();
}
}
Of course if i do this (see below) i get the ToList method on my IQueryable
public IQueryable<Client> GetCode()
{
using (ITransaction transaction = _session.BeginTransaction())
{
var results = (from c in _session.Query<Client>()
select c;
}
}
The problem being is that i need to do DISTINCT and use only 1 column.
Any ideas, i am at a loss
Thanks in advance
EDIT
When i look at the type that is returned via IQueryable it is
{NHibernate.Linq.NhQueryable<<>f__AnonymousType6>}
and looking under the base class of what is returned i see an exception
Expression type 10005 is not supported by this SelectClauseVisitor.
Wouldn’t the following work?
The problem here is not just that you can’t call
ToListon a non-genericIQueryable, but that the entire result is untyped, so you cannot read theCodeproperty of each element either. (This can be worked around with C# 4’s dynamic type, but that’s not really what you want here.)In your case, I don’t see why you really need to construct an anonymous type just to return a distinct sequence of
Codevalues renamed asGroup. Returning the field’s value should be sufficient.If you’d need to return more than just one column, you should create an explicit type, rather than using an anonymous type, so you can say