Linq to NHibernate: Отличный - PullRequest
       6

Linq to NHibernate: Отличный

6 голосов
/ 16 ноября 2009

Я пытаюсь получить следующий вывод SQL с использованием Linq-to-NHibernate:

SELECT DISTINCT Name, at.Year FROM MyTable mt
INNER JOIN AnotherTable at ON at.Id = mt.AnotherTableId

Свойства Name и Year будут помещены в новый класс, поэтому код C # будет выглядеть примерно так:

Session.Linq()
   .Select(x => new FooBar { Name = x.Name, Year = x.AnotherTable.Year }))
   .ToList();

Как заставить ключевое слово DISTINCT появляться в запросе sql?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Я не пользуюсь повседневным провайдером linq, но поискать его не представляется возможным.

Не могли бы вы рассмотреть QueryOver?

 First firstReference = null;
        Second secondReference = null;
        var items = Session().QueryOver(() => firstReference)
                        .JoinAlias(() => firstReference.Seconds, () => secondReference)
                        .Select(Projections.Distinct(
                                Projections.ProjectionList()
                                    .Add(Projections.Property(() => firstReference.Name).WithAlias(() => firstReference.Name))
                                    .Add(Projections.Property(() => secondReference.Year).WithAlias(() => secondReference.Year))))
                        .TransformUsing(Transformers.AliasToBean(typeof(FooBar)))
                        .List<FooBar>();

Надеюсь, это поможет.

1 голос
/ 16 ноября 2009

Не можете попробовать:

Session.Linq()
   .Select(x => new FooBar { Name = x.Name, Year = x.Year }))
   .Distinct()
   .ToList();

Select возвращает IEnumerable, поэтому по умолчанию он должен иметь Distinct, независимо от того, обнаружит это ваш intellisense или нет.

...