从CSV中读取并转换为字典



我有一个具有以下值的CSV文件。我想读CSV和创建一个字典在c#。字典键=List<Product>中的名称和值,如Dictionary<string, List<Product>>

注意:在CSV中,Name可以复制(笔记本电脑)。因此,我必须首先获得一个不同的Name,以获得字典的键并构建Product列表。

例如,在下面的示例数据字典中将有两个键

  1. 笔记本电脑(有两个值)
  2. 移动(只有一个值)

我找到了下面的代码,但不确定如何根据上述要求构建字典。

var dict = File.ReadLines("textwords0.csv").Select(line => line.Split(',')).ToDictionary(line => line[0], line => line[1]);
Name     Code  Price
laptop , 9999, 100.00
Mobile , 7777, 500.00
laptop , 9999, 100.00
public class Product 
{
string Name {get;set;}
string code {get;set;}
string Price {get;set;}
}

由于字典键不重复,需要.GroupBy()先按Name分组.

  1. .GroupBy()- Group byName,返回匿名IEnumerable{ string Name, List<Product> Products }

  2. .ToDictionary()-将之前的IEnumerable数据转换为键值对

var dict = File.ReadLines("textwords0.csv")
.Select(line => line.Split(','))
.GroupBy(
x => x[0],
(k, x) => new
{
Name = k,
Products = x.Select(y => new Product
{
Name = y[0],
code = y[1],
Price = y[2]
})
.ToList()
})      
.ToDictionary(x => x.Name, x => x.Products);

示例。net提琴演示

相关内容

  • 没有找到相关文章

最新更新