Поиск списка в списке по условию

У меня есть список matrix. Каждый элемента списка содержит несколько списков Items. Мне необходимо сделать поиск нужного списка Items по условию: найти список, в котором все три элемента будут соответствовать заданным. Например надо найти список Item, в котором будут содержаться элементы где Status = Approve и ApproveWithCondition и Approve. Где Status = Approve и Reject и Reject. Как это можно реализовать с помощью Linq?

public class Item
{
    public string Status;
}

Коллекция

var matrix = new List<List<Item>>()
{
    new List<Item>()
    {
        new Item(){ Status = "Approve"},
        new Item(){ Status = "Approve"},
        new Item(){ Status = "Approve"}
    },
    new List<Item>()
    {
        new Item(){ Status = "Approve"},
        new Item(){ Status = "ApproveWithCondition"},
        new Item(){ Status = "Approve"}
    },
        new List<Item>()
    {
        new Item(){ Status = "Reject"},
        new Item(){ Status = "Reject"},
        new Item(){ Status = "Reject"}
    },
    new List<Item>()
    {
        new Item(){ Status = "Approve"},
        new Item(){ Status = "Reject"},
        new Item(){ Status = "Reject"}
    }
};

Ответы (1 шт):

Автор решения: Vitaliy Zlobin

Все Approve:

var result = matrix.Where(e => e.All(i => i.Status == "Approve"));

Все Approve/ApproveWithCondition

var result = matrix.Where(e => e.All(i => i.Status == "Approve" || i.Status == "ApproveWithCondition"));
→ Ссылка