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
ThenBy ThenByDescending uzatma yöntemleri kullanabilirsiniz:
foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)
SERİ ile birden fazla Sipariş...
Sql seri: sol dış birleşimler Birden f...
Örnek veya birden fazla geçiş ile Teme...
Nasıl birden fazla satır düzenleme yap...
ES 2.0 Birden fazla Program veya Birde...