У меня есть 3 класса, как показано ниже,
public class Main
{
public string MainName { get; set; }
public List<SubClass1> SubClass1S { get; set; }
public List<SubClass2> SubClass2S { get; set; }
}
public class SubClass1
{
public string SubClass1Name { get; set; }
}
public class SubClass2
{
public string Name { get; set; }
public string Config { get; set; }
}
и ниже приведены мои образцы данных,
var lsMains = new List<Main>();
var main1 = new Main
{
MainName = "main1",
SubClass1S = new List<SubClass1> { new SubClass1 { SubClass1Name = "sub1" }, new SubClass1 { SubClass1Name = "sub2" } },
SubClass2S = new List<SubClass2> { new SubClass2 { Name = "N1", Config = "C1" } }
};
lsMains.Add(main1);
var main2 = new Main
{
MainName = "main2",
SubClass1S = new List<SubClass1> { new SubClass1 { SubClass1Name = "sub1" } },
SubClass2S = new List<SubClass2> { new SubClass2 { Name = "N1", Config = "C1" }, new SubClass2 { Name = "N2", Config = "C2" } }
};
lsMains.Add(main2);
var main3 = new Main
{
MainName = "main3",
SubClass1S = new List<SubClass1> { new SubClass1 { SubClass1Name = "sub3" } },
SubClass2S = new List<SubClass2> { new SubClass2 { Name = "N1", Config = "C1" }, new SubClass2 { Name = "N2", Config = "C2" } }
};
lsMains.Add(main2);
Теперь мне нужно отфильтровать данные,
- , где
SubClass1Name = "sub1"
и число в списке SubClass1
= 1 - , где
SubClass2
config равно "C1", Config = "C1"
Класс результата должен иметь вид это,
var result = new Result
{
MainName = "main2",
SubClass2Config = "C1",
SubClass2Name = "N1"
};
Я пробовал это, как фильтровать на 2-й класс SubClass2
? Спасибо!
var X1 = lsMains.Where(x => x.SubClass1S.Count == 1).ToList();
foreach (var x in X1)
{
if (x.SubClass1S.Where(y => y.SubClass1Name == "sub1"))
{
}
}