Foo().OrderBy(x=> x.Name)
Koleksiyonun bu şekilde sıralanmasını istiyorum, ancak tam olarak == ile ifade edilen bir öğenin (= 314), adından bağımsız olarak her zaman başlangıçta olması gerekir.Linq - advanced .OrderBy
Foo().OrderBy(x=> x.Name)
Koleksiyonun bu şekilde sıralanmasını istiyorum, ancak tam olarak == ile ifade edilen bir öğenin (= 314), adından bağımsız olarak her zaman başlangıçta olması gerekir.Linq - advanced .OrderBy
İki mermi üzerinde sıralayabilirsiniz:
Foo().OrderBy(x => x.Id == 314 ? 0 : 1).ThenBy(x => x.Name)
Belki bu daha basittir
Foo().OrderBy(x => x.Id != 314).ThenBy(x => x.Name)
Şahsen ben o sonradan halledeceğini (false boolean true boolean önce sported olduğu varsayılarak) İstemci, ancak LINQ yolunu tercih ederseniz, muhtemelen Concat
'dan kaçınırım - daha karmaşık bir sorgu olacaktır. Ben gitmek istiyorum:
int id = 314;
var data = Foo().OrderBy(x => x.Id == id ? 0 : 1).ThenBy(x => x.Name)
Union
kullanarak deneyin:
var foo = Foo();
foo.Where(x => x.id == 314).Union(foo.OrderBy(x => x.Name));
MSDN'ye göre (yukarıdaki bağlantıya bakın), Concat'ın çoğalmasına izin verdiği için bu, Concat'la ilgili her şeyden daha iyi bir çözümdür. –
'Single' tek bir nesneyi döndürür - bu konuda Sendika'yı arayamazsınız. –
Bu, Foo() 'yı her zaman harika bir fikir olmayan iki kere çağırırdı. – jishi
false türlü gerçek evvel. ILSpy, "Boolean.CompareTo" değerlerinin eşit olması durumunda 0 değerini döndürdüğünü, aksi takdirde -1 değerini döndürdüğünü gösterir. – user7116
Bilmek güzel! teşekkür ederim. – jishi