2016-09-18 56 views
1

我有一個JSON創建鮮明的項目列表如下 -從JSON

[ 
    { 
    "From": "London", 
    "To": "Dubai", 
    "Duration": "4" 
    }, 
    { 
    "From": "Dubai", 
    "To": "Mumbai", 
    "Duration": "8" 
    }, 
    { 
    "From": "Dubai", 
    "To": "Dhaka", 
    "Duration": "4" 
    } 
] 

正如你可以看到JSON在ToFrom外地地點。我創建使用

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); 

而且JSON Model類

public class model 
    { 
     public string From { get; set; } 

     public string To { get; set; } 
     public string Duration { get; set; } 
    } 

最後,我想創建一個名爲List<string>其中Cities將只包含從JSON Distinct城市名稱,沒有任何重複。 即迪拜在JSON中出現三次。

任何想法?

回答

1

,如果你的意思是直接的JSON或解析列表我不能肯定。假設您的意思是列表,您可以使用Linq從列表中選擇不同的元素:

var cities = list.Select(x => x.To).Distinct(); 
+0

感謝Dan。它的工作原理,但我不明白的代碼。特別是'list.Select(x => x.To)'我相信它的lambda表達式正確嗎? – envyM6

+1

是的,這是正確的,基本上你是基於標準將你的原始列表投影到新列表中。按照我的理解,'x => x.To'是從每個元素中選擇'To'字段作爲新列表,Distinct()將您的新列表並選擇不同(獨特)元素作爲新元素list.I強烈建議做一些閱讀/ Linq教程,因爲你可能會發現它是有益的。這裏有一個很好的起點:https://msdn.microsoft.com/en-us/library/bb397933.aspx –

+0

好吧,現在我看到一個問題..我的要求是從兩個'到'和'從'字段,並使它們不同。在上面的解決方案中,我只是變得「獨特」! – envyM6