对于每一个未知的比较
本文关键字:比较 未知 每一个 | 更新日期: 2023-09-27 18:11:38
我有一个程序,它根据用户在其他地方的输入生成报告。这个报告永远在变化,所以我永远无法将任何东西与常量进行比较,因为常量会在一天左右发生变化。
当前我的报告生成类似这样的内容。名称值
5 10151 B
2 B B3
我要做的是每次字母相同的时候加上另一列的数字-我考虑过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"]);