23 Aralık 2008, Salı
artan/SERİ içinde azalan bir parametre üzerinden sırasını değiştirebilir mi?
Parametre olarak verilen bir yöntem var "bool sortAscending". Şimdi SERİ sıralı Listesi Bu parametre bağlı olarak oluşturmak için kullanmak istiyorum. Sonra bu var:
var ascendingQuery = from data in dataList
orderby data.Property ascending
select data;
var descendingQuery = from data in dataList
orderby data.Property descending
select data;
Gördüğünüz gibi, her iki sorgu tek fark "" olabilir."". artan azalan Her iki sorguları birleştirmek istiyorum, ama nasıl bilmiyorum. Kimseye cevap var mı?
CEVAP
23 Aralık 2008, Salı
Kolayca IEnumerable veya IQueryable kendi uzantısı yöntemi oluşturabilirsiniz:
public static IOrderedEnumerable<TSource> OrderByWithDirection<TSource,TKey>
(this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
bool descending)
{
return descending ? source.OrderByDescending(keySelector)
: source.OrderBy(keySelector);
}
public static IOrderedQueryable<TSource> OrderByWithDirection<TSource,TKey>
(this IQueryable<TSource> source,
Expression<Func<TSource, TKey>> keySelector,
bool descending)
{
return descending ? source.OrderByDescending(keySelector)
: source.OrderBy(keySelector);
}
Evet, bir sorgu ifadesinde burada kullanma yeteneği kaybedersiniz ama açıkçası aslında bir sorgu ifadesinde bu durumda zaten sahip olduğunuzu sanmıyorum. Sorgu ifadeleri karmaşık şeyler için büyük, ama eğer sadece tek bir işlem yapıyoruz eğer sadece basit bir operasyon koymak için:
var query = dataList.OrderByWithDirection(x => x.Property, direction);
Bunu Paylaş:
Herhangi bir parametre Listesi içinde ...
-Click, ng işlev içinde ekleme paramet...
Sorun string int dönüştürme varlıklar ...
Varargs parametre üzerinden potansiyel...
Nasıl Objective-C içinde birden çok pa...