我有一个具有以下值的CSV文件。我想读CSV和创建一个字典在c#。字典键=List<Product>
中的名称和值,如Dictionary<string, List<Product>>
注意:在CSV中,Name可以复制(笔记本电脑)。因此,我必须首先获得一个不同的Name,以获得字典的键并构建Product列表。
例如,在下面的示例数据字典中将有两个键
- 笔记本电脑(有两个值)
- 移动(只有一个值)
我找到了下面的代码,但不确定如何根据上述要求构建字典。
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
分组.
-
.GroupBy()
- Group byName
,返回匿名IEnumerable
与{ string Name, List<Product> Products }
。 -
.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提琴演示