2014-10-31 3 views
0

Название несколько запутанно, позвольте мне попытаться объяснить, что я пытаюсь сделать. Я получаю 2 строки одновременно, они подключены друг к другу на каждом , принимают, но могут или не могут быть связаны со следующими полученными данными.Подсчет 2 элементов

Так что, если я получаю эту комбинацию:

ID24 
PART2 

Я хочу создать переменную, которая будет увеличивать счетчик на этой комбинации, например .:

ID24-PART2++ (1) 

Затем, на следующий получить круглый, я мог бы получить это:

ID59 
PART2 

Так что я бы увеличиваем этот конкретный счетчик:

ID59-PART2++ (1) 

Чтобы завершить, если я снова получил:

ID24 
PART2 

Тогда:

ID24-PART2++ (2) 

Надежда Я объяснил себя хорошо. Производительность важна.

Может быть какой-то массив:

data["ID24"]["PART2"]++; 

?

ответ

0

Что я хотел бы сделать, это добавить две строки вместе, и добавить его в словарь в виде строки:

Dictionary<Tuple<string,string>,int> stringDict = new Dictionary<Tuple<string,string>,int>(); 

Тогда для каждой строки пары, как вы получите:

Tuple<string,string> stringTuple = new Tuple<string, string>(string1, string2); //string1 and string2 are the strings you recieve 

if(stringDict.ContainsKey(stringTuple)) 
    stringDict[stringTuple]++; 
else 
    stringDict.Add(stringTuple, 0); 

Если у вас были желая повторять это через foreach петли вы должны использовать подобным образом:

foreach(KeyValuePair<Tuple<string, string>, int> kvp in stringDict) 
{ 
    Tuple<string, string> keyTuple = kvp.Key; 
    int tupleCount = kvp.Value; 
} 
+0

Если вы это сделали, то «AA» и «B» будут считаться равными «A» и «AB». – Servy

+0

Как так? '" AA "+" B "=" AAB "' совпадает с символом "Hello" + "World" = "Hello World" '? Я понимаю, что «кортеж», возможно, будет работать лучше, но добавление строки будет работать. – JRLambert

+0

Да, «AA» + «B» = «AAB», а также «A» + «AB» = «AAB» *. Теперь у вас есть две совершенно разные пары строк, которые сопоставляются с одним и тем же ключом словаря. Вы должны видеть две разные пары, каждая из которых имеет один счет, а не одну пару с двумя подсчетами, но ваш код этого не сделает. – Servy

2

есть словарь, который отображает пару строк в целое число:

Dictionary<Tuple<string, string>, int> dictionary = ... 
+0

не знал Ту привет, спасибо! – Cornwell

0

Решение может быть использовать HashMap. Возьмите два входа, отбросьте их до строки и затем сохраните их в хэш-карте с двумя входами в качестве ключа и счетчика в качестве значения.

Смежные вопросы