Sen gerektiğini kesinlikle kullanmayın ThenBy
birden ziyade OrderBy
aramalar.
Bunu öneririm:
tmp = invoices.InvoiceCollection
.OrderBy(o => o.InvoiceOwner.LastName)
.ThenBy(o => o.InvoiceOwner.FirstName)
.ThenBy(o => o.InvoiceID);
Her seferinde aynı adı nasıl kullanabileceğinizi not edin. Bu aynı zamanda şuna da eşdeğerdir:
tmp = from o in invoices.InvoiceCollection
orderby o.InvoiceOwner.LastName,
o.InvoiceOwner.FirstName,
o.InvoiceID
select o;
Birden OrderBy
çok kez ararsanız , diziyi tamamen üç kez etkili bir şekilde yeniden düzenler ... böylece son arama etkili bir şekilde baskın olan olur. Sen can (LINQ Nesneler) yazma
foo.OrderBy(x).OrderBy(y).OrderBy(z)
eşdeğer olacaktır
foo.OrderBy(z).ThenBy(y).ThenBy(x)
sıralama düzeni sabit olduğundan, ancak şunları kesinlikle yapmamalısınız:
- Okumak zor
- İyi performans göstermiyor (çünkü tüm diziyi yeniden sıraladı)
- İyi olabilir değil diğer sağlayıcılar (örneğin LINQ to SQL) çalışmak
- Temelde nasıl
OrderBy
kullanılmak üzere tasarlandığı değil .
Buradaki OrderBy
amaç, "en önemli" sipariş projeksiyonunu sağlamaktır; daha sonra ThenBy
ikincil, üçüncül vb sıralama projeksiyonlarını belirtmek için (tekrar tekrar) kullanın.
: Etkili, Şöyle düşünmek OrderBy(...).ThenBy(...).ThenBy(...)
tür ardından dizisini herhangi iki nesne için tek kompozit karşılaştırma oluşturmanızı sağlar ve bir kez bu kompozit karşılaştırma kullanılarak. Neredeyse kesinlikle istediğiniz şey bu.