2011-05-13 33 views
1

有很基本的問題: 我需要在C#中實現這個。 我有兩個列表說列表1和列表2兩個列表按降序排序,但受約束

列表1 23,34,45,12,34,34,67,100,34

列表2 0.1,0.3,0.1,0.2,0.15,0.17,0.91,0.81 ,0.3

正如你所看到的那樣,list1中有數據點的重複(在這種情況下是34) 我必須按List1中的降序排序List1,這樣如果List1中有重複的條目(34) List2中最高的對應值(這裏34已經得到了0.3,0.3,0.17和0.15) 所以輸出應該先是34對應於0.3,然後再到0.3再到0.17然後再到0.15

列表1 100,67,45,34,34,34,34,23,12

列表2 0.81,0.91,0.1,0.3,0.3,0.17,0.15,0.1,0.2

+2

這是一個家庭作業嗎? – skaz 2011-05-13 12:23:20

+0

從你寫的東西我不能確切地確定list1和list2是什麼。我也不太明白預期的結果是什麼。你能舉一個比較清楚的例子嗎?謝謝。 – Christian 2011-05-13 12:24:07

+0

您是否已經在特定結構中列出了這些列表(例如列表和列表),您是否已有任何代碼,並且您對如何執行此操作有任何想法?這通常是很好的表明你已經刺探了這個問題,所以我們知道在哪裏可以更準確地幫助... – Chris 2011-05-13 12:25:56

回答

8

這看起來像:

var result = list1.Zip(list2, (x, y) => new { x, y }) 
        .OrderByDescending(z => z.x) 
        .ThenByDescending(z => z.y); 

其結果將是一個匿名類型,其中x對應於值在list1的序列,y對應於list2的值,並且整個事情是在降序排序上x然後y