如何从linq查询返回某些属性,而不是完整的对象?
问题描述:
我刚刚下载了NHibernate的Linq提供程序,我只是有点兴奋。但我不太了解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?或者这是不可能的?
感谢
大卫
答
使用匿名投影:
var query = from foo in session.Linq<Kctc.BusinessLayer.Domain.Case>()
where foo.CaseNumber > 0
select new { foo.Id, foo.Bar };
感谢Stephen和ck。我对这个Linq业务感到非常兴奋。这是自jQuery以来我发现的最令人兴奋的事情。为什么需要我这么久? :) – David 2010-07-15 13:27:03
哦,我的天啊,这绝对是病! :) – David 2010-07-15 13:29:07
LINQ确实是开创性的。等待,直到你发现[LINQ to events](http://blogs.msdn.com/b/rxteam/archive/2010/07/07/rx-hands-on-labs-published.aspx)。然后你的大脑会真的开始弯曲。 :) – 2010-07-15 13:33:51