2017-02-14 62 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(); 

如果这不是你在找什么,那么请更具体。