我正在使用NHibernate 2.1和LINQ提供程序,我从这个查询返回的结果有多个根节点:
public IList<Country> GetAllCountries()
{
List<Country> results = (from country in _session.Linq<Country>()
from states in country.StateProvinces
orderby country.DisplayOrder, states.Description
select country)
.Distinct()
.ToList();
return results;
}
我知道使用Criteria API你可以调用DistinctRootEntityResultTransformer()来确保你获得一个唯一的根节点,但我正在将我的大多数查询转换为NHibernate LINQ提供程序,我没有看到equavalient.
http://nhforge.org/wikis/howtonh/get-unique-results-from-joined-queries.aspx
最佳答案 使用NorthWind数据库,我想从区域中找回不同的区域……这种语法正常工作.
(from t in Territories
from r in Regions
select new
{
r.RegionDescription
})
.Distinct().OrderBy(r => r.RegionDescription)
微软论坛here上有一篇文章可能有所帮助.