C# 从JSON创建不同的项目列表
我有一个JSON,如下所示-C# 从JSON创建不同的项目列表,c#,json,C#,Json,我有一个JSON,如下所示- [ { "From": "London", "To": "Dubai", "Duration": "4" }, { "From": "Dubai", "To": "Mumbai", "Duration": "8" }, { "From": "Dubai", "To": "Dhaka", "Duration": "4" } ] 正如您所看到的,JSON在到和从字段中有位置
[
{
"From": "London",
"To": "Dubai",
"Duration": "4"
},
{
"From": "Dubai",
"To": "Mumbai",
"Duration": "8"
},
{
"From": "Dubai",
"To": "Dhaka",
"Duration": "4"
}
]
正如您所看到的,JSON在到
和从
字段中有位置。我正在使用
List<model> list = new List<model>();
foreach (var item in lines)
{
string[] fields = item.Split(',');
list.Add(new model
{
From = fields[0],
To = fields[1],
Duration = fields[2]
});
}
var json = JsonConvert.SerializeObject(list, Formatting.Indented);
最后,我想创建一个名为Cities
的列表
,它只包含来自JSON的不同的
城市名称,不重复。
i、 e.迪拜在JSON中出现三次
有什么想法吗?我不确定你是直接指json还是解析列表。假设您指的是列表,您可以使用Linq从列表中选择所需的不同元素:
var cities = list.Select(x => x.To).Distinct();
谢谢你,丹。它可以工作,但我不理解代码。特别是
list.Select(x=>x.To)
我相信它的lambda表达式是正确的吗?是的,这是正确的,基本上你是在根据一个条件将原始列表投影到一个新列表中。我的理解是,“x=>x.To”是从每个元素中选择“To”字段作为一个新列表,Distinct()接受您的新列表,并选择Distinct(unique)元素作为一个新列表。我强烈建议您做一些阅读/Linq教程,因为您可能会发现这很有用。这是一个很好的起点:好吧,现在我看到一个问题。。我的要求是从到和从字段中获取城市名称,并将它们区分开来。在上面的解决方案中,我只得到了的
不同!
var cities = list.Select(x => x.To).Distinct();