SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • gamingbits

    gamingbits

    2 Mayıs 2006
  • Pepsi

    Pepsi

    1 Kasım 2005
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009