Как вы возвращаете определенные свойства из запроса linq, а не полные объекты? - PullRequest
5 голосов
/ 15 июля 2010

Я только что скачал провайдер Linq для NHibernate и просто немного взволнован. Но я не очень хорошо знаю синтаксис Linq.

Я могу вернуть целые объекты из запроса следующим образом:

var query = from foo in session.Linq<Kctc.BusinessLayer.Domain.Case>()
                  where foo.CaseNumber > 0
                  select foo;

И я могу выбрать одно свойство, как это:

var query = from foo in session.Linq<Kctc.BusinessLayer.Domain.Case>()
                  where foo.CaseNumber > 0
                  select foo.Id;

Но как бы я выбрал два свойства, например, foo.Id и foo.Bar? Или это невозможно?

Спасибо

David

Ответы [ 2 ]

8 голосов
/ 15 июля 2010

Использовать анонимную проекцию:

var query = from foo in session.Linq<Kctc.BusinessLayer.Domain.Case>() 
              where foo.CaseNumber > 0 
              select new { foo.Id, foo.Bar }; 
1 голос
/ 15 июля 2010

Вы должны создать новый тип Anonymous, который будет доступен только в текущей области (т. Е. Его нельзя вернуть из метода и т. Д.)

var query = from foo in session.Linq<Kctc.BusinessLayer.Domain.Case>() 
              where foo.CaseNumber > 0 
              select new { foo.Id, foo.Bar }; 

Или вы можете создатьпользовательский класс и заполнить его.

...