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

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • Modus Recordings

    Modus Record

    26 Kasım 2008
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007