SORU
23 ŞUBAT 2010, Salı


SERİ ile birden fazla Sipariş

Bir Liste ETMENİZ kullanarak değiştirmek istediğim temel bir sınıf, aşağıdaki gibi bir şey ile başlar:

public class FooBar   
{  
    public virtual int Id { get; set; }  
    public virtual string Foo{ get; set; }  
    public virtual string Bar{ get; set; }
}

Bu sonuçta benim sorun olmayan lambda ETMENİZ şeyleri kullanarak çözmeye bulundu.

// code somewhere else that works and gets the desired results  
var foobarList = GetFooBarList();  // Abstracted out - returns List<Foobar>  

// Interesting piece of code that I want to examine
var resultSet = from foobars in foobarList  
                orderby foobars.Foo, foobars.Bar  
                select foobars;

// Iterate and do something interesting  
foreach (var foobar in resultSet)  
{  
    // Do some code  
}

Gerçekten merak ediyorum, eğer aynı genel IEnumerable kapalı Lambda tabanlı uzatma yöntemleri kullanılarak yapılabilir eğer aynı şeyi yapmak için. Google aşağıdaki gibi bir şey yapmak için yapabileceğim söyledi

var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar})  
                          .Select(x=>x);

Ancak eğer ben foreach deyimi vurduğumda bir çalışma zamanı hatası alıyorum bunu. Hata en az bir nesne için bir anonim tip kullanıyorum beri görüyorum ki İComparible, uygulamak olduğunu söyledi .() OrderBy yöntemi.

Yani bir şekilde Lambda şekilde kullanarak istediğim şeyi yapmak için mi?

CEVAP
23 ŞUBAT 2010, Salı


ThenBy ThenByDescending uzatma yöntemleri kullanabilirsiniz:

foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BlackmillMusic

    BlackmillMus

    3 Kasım 2010
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010