У меня проблема с расширенной фильтрацией данных с использованием LINQ.
Я хотел бы получить список классов Plan с подробным списком, где аргументы в списках элементов содержат определенные символы.Также список предметов должен содержать только эти отфильтрованные элементы.
Мои классы выглядят так:
class Plan
{
public string Name { get; set; }
public List<Detail> Details { get; set; }
public Plan()
{
Details = new List<Detail>();
}
}
class Detail
{
public string Setting { get; set; }
public List<Item> Items { get; set; }
public Detail()
{
Items = new List<Item>();
}
}
class Item
{
public string Arguments { get; set; }
}
Мое текущее решение выглядит так, но я думаю, что это не лучший вариант.Я пытался написать этот код, используя Where
и Any
, но у меня есть список планов, в котором элементы содержат все элементы.
var filteredPlans = plans.Select(x =>
new Plan
{
Name = x.Name,
Details = x.Details.Select(y =>
new Detail
{
Setting = y.Setting,
Items = y.Items.Where(c => c.Arguments.Contains("...")).Select(z =>
new Item
{
Arguments = z.Arguments
}).ToList()
}).ToList()
});
Как мне написать этот код, используя оператор WHERE или Что такоелучшее решение для этого?
Кроме того, как я могу получить разницу урожая, используя LINQ EXPECT на основе списка предметов?например, планы: содержит все планы с элементами, планы2: содержит все планы с отфильтрованными элементами, а планы3 должны содержать все планы с элементами, которые не принадлежат планам2.