2010-07-15 7 views
5

Sadece NHibernate için Linq sağlayıcısını indirdim ve biraz heyecanlıyım. Ama ben Linq sözdizimini iyi bilmiyorum.Belirli nesneleri tam nesneleri değil, bir linq sorgusundan nasıl döndürürsünüz?

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

Ve ben böyle tek bir mülkü seçebilirsiniz:

böyle bir sorgudan bütün nesneleri dönebilirsiniz

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

Ama nasıl mesela iki özellik seçersiniz foo.Id ve foo.Bar? Yoksa bu mümkün değil mi?

Teşekkür

David

cevap

8

kullanın anonim projeksiyon:

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

Hem Stephen hem de ck'ye teşekkürler. Bu Linq işi için çok heyecanlıyım. JQuery'den beri bulduğum en heyecan verici şey. Beni neden bu kadar uzun sürdü? :) – David

+0

Aman Tanrım, bu kesinlikle hasta! :) – David

+1

LINQ gerçekten çığır açıyor. Sadece [LINQ olayları] hakkında bilgi edinin (http://blogs.msdn.com/b/rxteam/archive/2010/07/07/rx-hands-on-labs-published.aspx). O zaman aklın * gerçekten * bükülmeye başlayacak. :) –

1

Bunu sadece (geçerli kapsamda satışa sunulacak yeni Anonymous türü oluşturmak zorunda yani o olamaz Bir yöntemden döndürülebilir.)

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

Veya Özel bir sınıf oluşturabilir ve bunu doldurabilirsiniz.

+0

+1, yalnızca mevcut kapsamda mevcut olduğunu belirtmek için. – David

+0

Çok ilginç bir blog var. Kölelik hakkındaki yazıyı sevdim! – David