2009-11-16 11 views
18

Bu siteyi kısa bir arama yaptım ve googled ettik, ama iyi bir örnek bulmak için görünmüyor olabilir. Hala başımı bütün "Lambda İfadeleri" olayına sokmaya çalışıyorum.Nasıl VB.Net lambda ifadeleri kullanarak birden çok sütun tarafından sipariş vermek için

Buradaki herkes bana bir lambda ifadesi kullanarak VB.Net ve Linq-to-SQL kullanarak birden fazla sütun kullanarak örnek verebilir mi?

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).ToList 

Not:

İşte sonuçlar sipariş tek sütunu kullanarak sıralı bir listesini döndürür Mevcut koddur WebCategory nesne (yabancı anahtar dayalı) bir alt WebPage nesnesi vardır. Önce WebPage.DisplayOrder, ardından WebCategory.DisplayOrder tarafından sipariş vermek istiyorum.

Siparişleri, aşağıdaki gibi sıralayarak zincirlemeyi denedim, ancak derlenmiş ve çalıştırılmış olsa da, verileri istediğim sırayla döndürmedim.

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).OrderBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 

Şimdiden teşekkürler.

cevap

39

Hızlıca Google arama için this MSDN article bulunamadı. ne senin arayan bu olduğunu tahmin:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder). _ 
ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 
+0

Teşekkür, ben arıyordum sadece budur. Bu makaleyi bulmak için kullandığınız Google arama terimleri neydi? – camainc

+1

Vay, (ne düşündüğümü) tam olarak bunu yapıyordum ve işe yaramazdı, bir çeşit Linq ile ilgili istisna elde ediyordum ... inanılmaz derecede sinirlendim ... sonra sonuncusu unuttum farkettim ".ToList " Bölüm. Geriye doğru bakıldığında, doğru veri türü olması gerektiği belliydi, ama sanırım "ağaçların ormanı" anlarından birine sahip olduğumu sanıyorum. Bilgi için teşekkürler! – evilspoons

12

Böyle ThenBy kullanmalısınız:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder) _ 
           .ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder) _ 
           .ToList() 
+1

Teşekkürler! Bunu HuBeZa ile aynı zamanda yanıtladınız, ama zaten olduğundan daha fazla rozetiniz olduğundan, ona cevabı verdim. – camainc

+0

BTW: Kendi IComparer'ınıza ihtiyacınız varsa, bunu iki kez (bir kez .OrderBy için ve bir kez .ThenBy komutu için) kullanmanız gerekir. Sadece '' Yeni MyOwnIComparer'ı ve elbette sınıfınız için kodunuzu MyOwnIComparer ismiyle ekleyin – PeterCo

İlgili konular