2012-03-07 137 views
-1

我有2列的IP表:IP和% 根據IP precent排序此表的最佳方法是什麼?如何對錶格進行排序?

enter image description here

表類型:

public List<string> statistics() 
{ 

} 
+0

列表只是一個數據字段。你如何在一個字符串中存儲2列? – hspain 2012-03-07 16:26:42

+0

每個字符串都包含「ipaddress {spaces} percent」嗎? – 2012-03-07 16:26:59

+1

這裏沒有足夠的信息。你的專欄有哪些類型?數據來自SQL嗎?你在使用實體框架嗎?這是內存表嗎?這是來自制表符分隔的文本嗎? – JamieSee 2012-03-07 16:28:05

回答

0

假設IpAddress列是一個字符串,你只是想按百分比下降排序的列值(大量假設,因爲你的問題是模糊的) :

List<string> ips = IpTable.OrderByDescending(x=> x.Percentage) 
          .Select(x=> x.IpAddress) 
          .ToList(); 
0

您必須將字符串拆分爲兩列,即par將第二列分爲數字,然後按該列排序。

 return from line in statistics 
       let split = line.Split('\t', '%') 
       let percentage = double.Parse(split[1]) 
       orderby percentage 
       select line; 

在這段代碼中,你必須用任何字符(縣)你在每個行和替換我索引以及列替換分裂的人物,但其餘的應該工作你需要。

+0

我輸入這個我收到錯誤後選擇行:不能隱式轉換類型'System.Collections.Generic.IEnumerable '爲'System.Collections.Generic.List user979033 2012-03-07 19:08:52

+0

添加.ToList()在最後,如果你想將結果分配給列表。 :) – Ani 2012-03-07 20:02:46

+0

同樣的錯誤後.ToList() – user979033 2012-03-07 20:11:57

0

我想在你的列表中的每個條目是一個字符串 - 如果不只是忽略以下...

你首先必須解析成另一種格式這一點 - 不知道這是不是真的,但我認爲有是之間的IP的和您%的標籤(「\ t」),那麼你可以通過執行類似

var stringTupleList = 
    myList.Select(s => s.Split('\t')) 
     .Select(ar => new { Ip = ar[0], PercentString = ar[1] }); 

這給你匿名類型的列表,您可以繼續像BrokenGlass回答開始:

var stringTupleList = 
    myList.Select(s => s.Split('\t')) 
     .Select(ar => new { Ip = ar[0], PercentString = ar[1] }) 
     .OrderByDescending(t => t.PercentString) 
     .Select(t => t.Ip) 
     .ToList(); 
+0

表類型是列表 user979033 2012-03-07 16:48:32

+0

然後它不是一個表,它是一個字符串列表.. – BrokenGlass 2012-03-07 17:26:14

相關問題