如何从linq查询中返回某些属性,而不是完整对象?

时间:2010-07-15 13:24:00

标签: linq nhibernate linq-to-nhibernate

我刚刚下载了NHibernate的Linq提供程序,我感到有点兴奋。但我不太了解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?或者那是不可能的?

由于

大卫

2 个答案:

答案 0 :(得分:8)

使用匿名投影:

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

答案 1 :(得分:1)

您必须创建一个新的Anonymous类型,该类型仅在当前范围内可用(即无法从方法等返回。)

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

或者您可以创建自定义类并填充它。