2014-03-13 53 views
-10

排序我有一個字母排列,像這樣:C#陣列由%

10% A 
20% A 
30% A 
40% B 
50% B 
60% B 
70% B 
80% C 
90% C 
100% D 

我需要的代碼給我造成這樣的:

A 10%-30% 
B 40%-70$ 
C 80%-90% 
D 100%-100% 
+2

嘗試一些然後復出。 – clcto

+0

歡迎來到堆棧溢出!請發佈您的解決問題的嘗試,以便我們可以指出問題所在。 – BradleyDotNET

+2

我傾向於解決這些問題的方式是想象我將如何自己做(使用物理卡或其他東西)......因此,我對您的問題是:您將如何手動執行此操作? – lzcd

回答

1

如果你的數組進行排序那樣,這應爲你工作:

var result = values.GroupBy(x => x.Last()) 
       .Select(
        x => 
         string.Format("{0} {1} - {2}", x.Key.ToString(), 
          x.First().Split()[0], 
          x.Last().Split()[0])); 
+0

我會測試。以上是一個簡單的例子。在這個領域我有100個參賽作品,記錄的分辨率是1%。我有4個字母(ABCD)設置是順序重複。下一封信時,前者不能再重複。 – user3417642

1

從我的角度來看,主題是首發的意思是這樣的:

static void Main() { 
    var array = new[] {"A", "A", "A", "B", "B", "B", "B", "C", "C", "D"}; 
    var result = new Collection<string>(); 

    //as u call it "resolution": 
    const int resolution = 10; 

    var currentSymbol = array[0]; 
    var startIndex = 1; 

    for (var index = 0; index < array.Length; index++) { 
     if (currentSymbol != array[index]) { 
      result.Add(currentSymbol + " " + startIndex*resolution + "%-" +index*resolution); 
      currentSymbol = array[index]; 
      startIndex = index + 1;     
     } 
     if (index + 1 == array.Length) { 
      result.Add(currentSymbol + " " + startIndex * resolution + "%-" + (index + 1) * resolution); 
      currentSymbol = array[index]; 
      startIndex = index + 1;  
     } 
    } 

    foreach (var a in result) { 
     Console.WriteLine(a); 
    } 
    Console.ReadLine(); 
} 
+0

謝謝大家。來自Selman22的項目工作完成。 – user3417642