【发布时间】:2021-05-16 01:19:25
【问题描述】:
我有一本字典 Dictionary<string, List<string>> 我想按字母顺序按键排序并将其转换为可以写入 CSV 文件的字符串,其中键作为列标题,值作为该列的值。
我的排序字典看起来像:
{
"Name" : ["John", "Ciara", "Moses"],
"Age" : ["23", "16", "37"],
"State" : ["Alabama", "Florida", "New York"]
}
最终结果将如下所示:
Age,Name,State
23,John,Alabama
16,Ciara,Florida
37,Moses,New York
请问我如何在 C# 中实现这一点?
为清楚起见,这里有一个link 来说明任务的含义。
下面是我解决它的方法。我将字符串转换为以列标题为键的字典。我现在的问题是将字典转换回字符串格式。
public static string SortCsvColumns( string csv_data )
{
var data = csv_data.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
var values = data.Skip(1).ToArray();
var splittedValues = new List<List<string>>();
var dataSet = data[0].Split(new string[] {","}, StringSplitOptions.None).ToDictionary(x => x, x => new List<string>());
for(int i = 0; i < values.Length; i++)
{
splittedValues.Add(values[i].Split(new string[] { "," }, StringSplitOptions.None).ToList());
}
for(int i = 0; i < splittedValues.Count(); i++) {
var splittedValue = splittedValues[i];
for(int j = 0; j < splittedValue.Count(); j++) {
dataSet.Values.ElementAt(i).Add(splittedValue[j]);
}
}
dataSet = dataSet.OrderBy(key => key.Key);
}
有人可以建议最好的方法吗?
【问题讨论】:
-
这里需要json吗?如果没有,最好展示实际的测试代码来设置测试数据,而不是不相关的数据结构
-
字典有什么乱序的?键(我们知道它们是无序的,因为它是字典)还是值?
-
@00110001 实际上任务是对 csv 字符串进行排序。我似乎无法编辑我的问题。我所做的是将表字符串转换为字典,然后对其进行排序。现在我正在寻找可以将其转换回表格字符串的最佳方法。
-
@Enigmativity 键。但我现在关心的是把字典转换成我的问题格式的字符串
标签: c# linq dictionary