2012-03-07 7 views
-1

私は2列のIPテーブルを持っています:IPと% IP precentに従ってこのテーブルをソートする最良の方法は何ですか?テーブルをソートする方法は?

enter image description here

テーブルタイプ:

public List<string> statistics() 
{ 

} 
+0

リストは1つのデータフィールドにすぎません。 1列に2列をどのように格納していますか? – hspain

+0

各文字列に 'ipaddress {spaces} percent'も含まれていますか? –

+1

ここに情報が不十分です。あなたの列のタイプは何ですか?データはSQLから来ていますか? Entity Frameworkを使用していますか?これは記憶表の中にありますか?これはタブで区切られたテキストから来ていますか? – JamieSee

答えて

0

あなたIpAddress列を想定すると、文字列で、あなただけ(あなたの質問が曖昧であるため、仮定の多くの)割合の降順でソートし、その列の値が欲しいです:

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

文字列を2つの列に分割する必要があります2番目の列を数値にしてから、その列を順序付けます。このコードで

 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

+0

最後に.ToList()を追加します結果をリストに割り当てる。 :) – Ani

+0

.ToList()の後に同じエラーが発生する – user979033

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

テーブルタイプがList user979033

+0

の場合、テーブルではなく、文字列のリストです。 – BrokenGlass