对于每一个未知的比较

本文关键字:比较 未知 每一个 | 更新日期: 2023-09-27 18:11:38

我有一个程序,它根据用户在其他地方的输入生成报告。这个报告永远在变化,所以我永远无法将任何东西与常量进行比较,因为常量会在一天左右发生变化。

当前我的报告生成类似这样的内容。名称值

5

10

151 B

2 B

B

3

我要做的是每次字母相同的时候加上另一列的数字-我考虑过for循环但我没有任何东西可以与

进行比较

例如,每次输出A时,将其对应的值相加,得到

= 30

是没有常量来比较的double吗?

编辑:-我已经编辑了上面的数字。如果你想象一个有描述和数量的数据库——我想说,每次打印a,把与a相关的所有值加起来然后每次打印B,把与B相关的值加起来,等等

对于每一个未知的比较

我认为您只需要将字母作为键存储在字典结构中,然后将值相加。

像这样

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;
}

此代码未经过测试。这只是一个建议,需要适应您的输入数据

假设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]));
}

使用/显示计数,使用数(输入。分割(' ')[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"]);