2017-11-14 169 views
9

Listelerdeki listeyi minimum tamsayı değerine göre sıralamaya çalışıyorum. Şu ana kadar burada olduğum yer. ÖrneğinListelerin listesini en düşük değere göre sırala

var SortedList = from lists in List 
       orderby lists.List.Min(Min=>Min.value) 
       ascending 
       select list ; 

:

var x = new List<int>{ 5, 10, 4, 3, 0 }; 
var y = new List<int> { 4, -1, -5, 3, 2 }; 
var z = new List<int> { 3, 1, 0, -2, 2 }; 

var ListofLists = new List<List<int>> {x, y, z}; 

benim Linq çıkış olacaktır, listeleri içinde en küçük değeri ile listeler sıralamak. Benim örnekte Listeler için sırası şöyle olacaktır:

y -> z -> x

ben linq ifadelerin çok denenmiş ve web üzerinden aradık. Soru çok basit görünüyor ... Her türlü yardım için teşekkürler!

+2

https://dotnetfiddle.net/bnfGOG gerçekleşmesi gerekenler: Burada

var sorted = from list in ListofLists orderby list.Min() select list; 

o eylem olduğu kopyaların – Pankaj

+0

"ListofLists" bildirisinde ekstra bir 'List <' var. – GolfWolf

+0

Benim uygulamamda mümkün olan en az kopya var. –

cevap

12

Bu kadar kolay olarak: Sorgu sözdizimi isterseniz

var sorted = ListofLists.OrderBy(l => l.Min()); 

Veya, yapmanız gereken: durumunda

+0

'Enumerable.OrderBy()' ayıklama tuşlarının yalnızca bir kez olduğunu garanti eder misiniz? Resmi belgelerde bulamadım (https://msdn.microsoft.com/en-us/library/bb534966 (v = vs.110) .aspx). –

+0

@LeonidVasilyev Ben de. Ancak bazı testler yaptıktan sonra '' l.Min() 'yi '{Console.WriteLine (". ") Ile değiştirerek l.Min();}') döndürün. Sıralamak için listeler olduğu için (3, 7 ve 10 liste ile denenmiş) çıktı olarak meny noktaları olarak alıyorum. – GolfWolf