2017-02-14 65 views
0

我想問是否可以直接訪問嵌套列表類中的值而不循環? 下面的代碼是工作,但我想簡化它,並可以直接訪問的價值。非常感謝你。沒有循環的列表類(嵌套類)的訪問值?

RootObject myjsondata = new RootObject(); 

RootObject jarray = JsonConvert.DeserializeObject<RootObject>(html); 

if(jarray.items.Count>0) 
{ 
    foreach (var a in jarray.items) 
    { 
     string b = a.snippet.title; 
    } 
} 

public class Snippet 
{ 
    public string title { get; set; } 
} 

public class Item 
{ 
    public Snippet snippet { get; set; } 
} 

public class RootObject 
{ 
    public List<Item> items { get; set; } 
} 
+0

那麼,如果你不循環,你希望發生什麼? – Servy

+0

你的意思是:'jarray [2] .items [3] .snippet.title' –

回答

0

您的代碼

string b = a.snippet.title 
在foreach循環

是沒有意義的。您正在給一個立即超出範圍的變量賦值。所以我只能猜測你想做什麼。

如果您試圖返回所有標題的列表,那麼您可以使用Linq。

using System.Linq; 

List<string> listOfTitles = jarray.items.Select(i => i.snippet.title).ToList(); 

請注意,jarray.items可以爲null,也可以是代碼片段,title可以爲null。

List<string> listOfTitles = null; 

if (jarray.items != null && jarray.items.Any()) 
    listOfTitles = jarray.items.Where(i => i.snippet != null && i.snippet.title != null) 
             .Select(i => i.snippet.title).ToList(); 

或短,取決於你的編譯器版本:

List<string> listOfTitles = jarray.items?.Where(i => i.snippet?.title != null) 
             .Select(i => i.snippet.title).ToList(); 

如果這不是你在找什麼,那麼請更具體。