2016-06-02 7 views
0

Ниже метод возвращает IList из «SomeClass», который имеет свойство IList.Использование LINQ для запроса свойств внутреннего IList

Что я ищу, если свойство «Статус» IList является «истинным», я хотел получить значения IList. Я могу легко сделать это с помощью цикла foreach, но я планирую использовать LINQ для этого.

Определения:

Метод:

IList<SomeClass> SomeMethod() 

public class SomeClass 
{ 
    public SomeClass(); 

    public IList<SomeInnerClass> ActualData { get; set; } 
    public bool Status { get; set; } 
} 

public class SomeInnerClass 
{ 
    public SomeInnerClass(); 

    public int? ID { get; set; } 
    public string Message { get; set; } 
    public string Name { get; set; } 
} 

Что я сейчас:

var abc = IList<SomeClass> SomeMethod(); 

foreach (var outer in abc) 
{ 
    foreach (var inner in outer.ActualData) 
    { 

    } 
} 
+2

не уверен, что мешает вам писать 'WHERE' и' SELECT' – techspider

+0

У вас нет коды ваши петли foreach. Что вы пытаетесь достичь? Пожалуйста, укажите ввод и вывод данных образца. – Neolisk

ответ

2

Если вы хотите, чтобы выбрать SomeInnerClass сами объекты, вы можете использовать a Where() вызова для фильтрации внешнего сбора, а затем Select() или SelectMany() вызова для получения либо ActualData или SomeInnerClass объектов соответственно:

// Get your list 
var list = SomeMethod(); 
// Pull out on the SomeInnerClasses where Status is true 
var output = list.Where(l => l.Status) 
       .SelectMany(l => l.ActualData) 
       .ToList();