Вот тот, который получает списки, содержащие в списке один элемент, соответствующий Name = "ABC" и Action = "123".
var newList = myList.Where(l =>
l.Exists(i => i.Name == "ABC"
&& i.Action == "123")).ToList();
Если вам нужен только список элементов списка, соответствующих условию, вы можете сделать:
var newList = (from l in myList
where l.Exists(i => i.Name == "ABC" && i.Action == "123")
select l.Where(i => i.Name == "ABC" && i.Action == "123").ToList()).ToList();
Чтобы сгладить список выше (преобразовать в простой список вместо списков списков), вам нужно сделать цикл foreach
:
List<Item> newList2 = new List<Item>();
foreach(var list in newList)
{
newList2.AddRange(list);
}