2015-09-07 77 views
-1

我有一個程序,根據用戶輸入的地方生成報告。這份報告永遠在改變,所以我永遠無法將任何事物與恆定的事物進行比較,因爲這種不變會在一天左右發生變化。對於每個與未知的比較

目前我的報告生成這樣的東西。 名稱值

阿5

甲15

乙1

B 2

乙3

我想要做的是說每次信是相同的時候加上另一列的數字 - 我想到一個for循環,但我沒有任何東西可以與

因此,例如每次A被印製添加其相應的值,得到

A = 30

這是雙沒有恆定比較它?

編輯: - 我編輯了上述數字。如果你想象一個有描述和數量的數據庫 - 我想說每一次打印A加上與A有關的任何值,然後每打印一次B加起來用B等打印的值

+0

不知道你正在處理什麼樣的數據,很難推薦具體的事情。如果我是你,我會看'GroupBy'。 – germi

+12

我是唯一一個在這裏什麼都不懂的人嗎? –

+0

從我能解決的問題來看,這個操作會加載'A'和'B',他想要一個計數器,每個計數器......這是正確的嗎?你有什麼嘗試? – Sayse

回答

0

我想你只需要將該字母作爲關鍵字存儲在一個字典結構中,然後將該值加起來即可。

像這樣的事情

Dictionary<string, int> result = new Dictionary<string, int>(); 
for(int i = 0; i < data.Count ; i++) 
{ 
    string line = data[i]; 
    string[] element = line.Split(' '); //assuming your data is a string like in your example 
    string key = element[0]; 
    int value = int.Parse(key[1]); 
    result[key] += value; 
} 

此代碼是沒有測試。這只是一個建議,需要根據您的輸入數據進行調整。

0

假設op是試圖做如@Sayse說

var counts = new Dictionary<string, int>(); 

void UpdateCounts(string input) 
{ 
    var inputDataArray = input.Split(' '); //no validation done on data 
    var charFromInput = inputDataArray[0]; 
    int currentCount; 
    if (counts.TryGetValue(charFromInput, out currentCount)) 
     counts[charFromInput] = currentCount + int.Parse(inputDataArray[1]); 
    else 
     counts.Add(charFromInput, int.Parse(inputDataArray[1])); 
} 

要使用/顯示計數,使用 計數[input.Split(」「)[0]]。 //這裏沒有驗證

+0

這就是我所假設的作者或多或少要求的。確保使用currentCount更新字典,但int不是引用類型。 –

+0

@Atoms編輯。是的,只有假設:) –

0

首先,讓我們說明問題。有一個文本文件(報告)

A 1 bla-bla-bla 
    A 2 something 
    A 3 45 66 996 
    B 4 ? 
    B 5 2223 
    B 6 data 
    C 7 anything 

我們想通過分組由第一列創建彙總報告總結:第二個和忽略其他列 (如果他們存在):

A = 6 
    B = 15 
    C = 7 

如果這是你的話,那麼LINQ的解決方案可以

var result = String.Join(Environment.NewLine, File 
    .ReadLines(@"C:\MyReport.txt") 
    .Select(line => line 
     .Split(new Char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries)) 
    .GroupBy(items => items[0], items => int.Parse(items[1])) 
    .Select(chunk => String.Format("{0} = {1}", chunk.Key, chunk.Sum()))); 
    ... 

    Console.Write(result); 

如果你想有一個Dictionary<String, int>所有你需要修改的Linq:

var dict = File 
    .ReadLines(@"C:\MyReport.txt") 
    .Select(line => line 
     .Split(new Char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries)) 
    .GroupBy(items => items[0], items => int.Parse(items[1])) 
    .ToDictionary(chunk => chunk.Key, chunk => chunk.Sum()); 

    ... 
    // return 6 
    Console.Write(dict["A"]);