2010-07-15 95 views
5

我剛剛下載了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?或者這是不可能的?

感謝

大衛

回答

8

使用匿名投影:

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

感謝Stephen和ck。我對這個Linq業務感到非常興奮。這是自jQuery以來我發現的最令人興奮的事情。爲什麼需要我這麼久? :) – David 2010-07-15 13:27:03

+0

哦,我的天啊,這絕對是病! :) – David 2010-07-15 13:29:07

+1

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

1

你必須創建一個新的Anonymous類型,只會在當前範圍內可用(即它不能從方法等返回)

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

或您可以創建一個自定義類並填充它。

+0

+1表示它僅在當前範圍內可用。 – David 2011-07-21 09:18:26

+0

非常有趣的博客你有。喜歡關於奴隸制的文章! – David 2011-07-21 09:21:22

相關問題