2017-02-14 9 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 

в цикле Еогеасп не имеет смысла. Вы присваиваете значение переменной, которая сразу же выходит за рамки. Поэтому я могу только догадываться, что вы пытаетесь сделать.

Если вы пытаетесь вернуть список всех названий, вы можете использовать Linq.

using System.Linq; 

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

Обращаем внимание, что jarray.items может быть пустым, а также фрагментировать и заголовок может быть пустым.

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

Если это не то, что вы ищете, пожалуйста, более конкретно.

 Смежные вопросы

  • Нет связанных вопросов^_^