8 Nisan 2018 Pazar

Linq Sorting Metodları

Giriş
Sıralama metodları bir diziyi verilen kritere göre sıralarlar.

OrderBy
Örnek
OrdreBy stable sorting sağlar. Şöyle yaparız.
var arr = new int[] { 1, 2, 3 };
var arr2 = arr.OrderBy(x => x == 2).ToArray();
// arr2 --> 1, 3, 2
Örnek
Şöyle yaparız.
list.OrderBy(p => p.Gender)
Örnek
Birden çok alana göre sıralamak için şöyle yaparız.
list.OrderBy(p=>p.Gender).ThenBy(p=>p.FirstName);
OrderByDescending
Kendi karşılaştırma sınıfımı kullanabilirim. Şöyle yaparız.
List<Foo> list = new List<Foo> {...};
IEnumerable<Foo> result =  
        list.OrderByDescending(f => f, new SpecialComparer());
Comparer sınıfı şöyledir.
public class SpecialComparer : IComparer<Foo>
{
  public int Compare(Foo f1, Foo f2)
  {
    if (f1 == f2)
      return 0;
    else if (f1 > f2)
      return 1;
    else
      return -1;
    }
}
ThenBy
Bu metod sadece IOrderedEnumerable arayüzünde bulunur. IEnumerable arayüzünde yoktur. IEnumerable arayüzünü IOrderedEnumerable arayüzüne çevirmek kolaydır. Sadece şöyle yaparız.
var orderedItems = list.OrderBy(_ => 1);
Bu arayüzü aldıktan sonra ikinci, üçüncü kritere göre dizmesi kolaydır. Şöyle yaparız.
orderedItems = orderedItems.ThenBy(listItem => listItem.Item1);
ThenByDescending
Örnek ver

Reverse
Örnek ver

Hiç yorum yok:

Yorum Gönder