【发布时间】:2018-04-24 13:23:06
【问题描述】:
我正在编写一个程序,它将简单地读取 2 个不同的 .csv 文件,其中包含以下信息:
file 1 file2
AA,2.34 BA,6.45
AB,1.46 BB,5.45
AC,9.69 BC,6.21
AD,3.6 AC,7.56
第一列是string,第二列是double。
到目前为止,我在阅读这些文件并将值放入列表中没有任何困难:
firstFile = new List<KeyValuePair<string, double>>();
secondFile = new List<KeyValuePair<string, double>>();
我正在尝试指导我的程序:
- 从第一个文件的第一行的第一列中获取第一个值(在本例中为
AA) - 并查看第二个文件的整个第一列中是否存在匹配项。
- 如果找到字符串匹配,比较它们对应的第二个值(在这种情况下为
double),如果在这种情况下找到匹配,则将整行添加到单独的List。
类似于下面的伪代码:
for(var i=0;i<firstFile.Count;i++)
{
firstFile.Column[0].value[i].SearchMatchesInAnotherFile(secondFile.Column[0].values.All);
if(MatchFound)
{
CompareCorrespondingDoubles();
if(true)
{
AddFirstValueToList();
}
}
}
我尝试使用Dictionary 而不是List,但是这个数据结构没有排序并且无法通过索引访问键。
我不是要求提供确切的代码,而是问题是:
您建议使用什么作为该程序的合适数据结构,以便我可以进一步调查自己?
【问题讨论】:
-
字典应该完全符合您的要求。
myDictionary[key]返回分配给给定键的值。要快速转换现有列表,您可以使用此 linq:stackoverflow.com/a/4022334/361842 -
一个键可以在同一个文件中重复吗?还是独一无二的?
-
没有。字典中不允许有重复的键
-
@MongZhu 不,密钥不会在我的程序的同一个文件中重复。这就是逻辑。
-
@Butler1233:我认为MongZhu 是在询问TiredOfProgramming 的要求;即查看字典是否适合此用例。
标签: c# csv data-structures