Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 CSV文件转换为ILookup_C# 4.0_Idictionary_Csvhelper_Ilookup - Fatal编程技术网

C# 4.0 CSV文件转换为ILookup

C# 4.0 CSV文件转换为ILookup,c#-4.0,idictionary,csvhelper,ilookup,C# 4.0,Idictionary,Csvhelper,Ilookup,一家供应商每晚向我们提供csv文件。我们需要获取csv,取出一些列,然后将它们导入到我们的内部应用程序中。我们收到的csv看起来有点像: 学生ID,研究生,2014年第1项,2014年第2项,2015年第1项,2015年第2项 等等,添加列似乎是永久性的。 当我第一次看到这个csv时,我的第一个倾向是将它转换为两列:因此: StudentId, 123456 GradYear, 2016 2014 Thing1, overdue 2015 Thing1, completed 我倾向于使用csv

一家供应商每晚向我们提供csv文件。我们需要获取csv,取出一些列,然后将它们导入到我们的内部应用程序中。我们收到的csv看起来有点像:

学生ID,研究生,2014年第1项,2014年第2项,2015年第1项,2015年第2项

等等,添加列似乎是永久性的。 当我第一次看到这个csv时,我的第一个倾向是将它转换为两列:因此:

StudentId, 123456
GradYear, 2016
2014 Thing1, overdue
2015 Thing1, completed
我倾向于使用csvHelper读入这个文件,并通过构造一个ILookup来转换它。因此,我将进行如下查找:

var theLookup = ILookup<string, KeyValuePair<string, string>>
我最想知道的是我是否走对了方向。
当我有了最终得到的任何供应商数据对象时,我需要循环浏览它,将学生记录与我们的学生记录进行比较,并就更新我们应用程序中的记录做出决定。

我认为您的做法是错误的。为什么您觉得需要转换数据?我需要隔离每个学生的记录,并将数据读入动态对象。也许转置是一个错误的术语,我试图做的是将每个学生放在他们自己的对象中,同时还要处理供应商将向csv添加列(额外学年)的可能性。
Dictionary<int, List<KeyValuePair<string, string>>> vendorDictionary = new     Dictionary<int, List<KeyValuePair<string, string>>>();

using (var fileReader = File.OpenText(sourcePath))
using (var reader = new CsvHelper.CsvReader(fileReader))
{
     while (reader.Read())
    {
        var dynamicVendor = reader.GetRecord<dynamic>() as IDictionary<string, object>;

        foreach (var rec in dynamicVendor)
        {
            var recordDictionary = dynamicVendor.ToDictionary(k => k.Key, k => k.Value.ToString());
            vendorDictionary.Add(counter, recordDictionary.ToList());
            ++counter;
        }
    }
foreach (var rec in vendorDictionary)
{
    Console.WriteLine("Vendor Dictionary record # " + rec.Key + " values are:");
    foreach (var value in rec.Value)
    {
       Console.WriteLine("Key: '" + value.Key + "' Value: '" + value.Value + "'");
    }                        
}