使用LINQ循环遍历外部类集合中的内部类属性,并按外部类属性分组
本文关键字:属性 外部 内部类 循环 LINQ 遍历 集合 使用 | 更新日期: 2023-09-27 18:24:56
利用问答;与处理循环通过对象的属性(在C#中循环通过对象属性和使用LINQ循环通过外部类集合中的内部类属性)一样,您有:
- Class1对象的集合(即listObj1)
- 每个Class1都包含属性和Class2对象的集合(即dictObj2)
如何:
- 有效地确定内部类(Class2)的属性
- 循环内部类(Class2)的属性
- 循环遍历Class1对象的集合(listObj1),选择Class2属性的所有实例
- 输出Class2属性的集合(例如,第一次迭代将返回MeasurementA的集合,每个Class1对象一个)
- 并且按Class1.PropertyA和Class1.PropertyB对集合进行分组
请在下面找到相关课程的大致地图。
我一直在尝试使用LINQ查询,但没有成功。Konrad Kokosa提供的答案是大部分。任何想法或指导都将不胜感激。
class MainClass {
List<Class1> listObj1
}
class Class1 {
// a number of fields including...
int PropertyA { get; set; }
int PropertyB { get; set; }
Dictionary<int, Class2> dictObj2 { get; set; }
}
class Class2 {
// a number of fields all of type double...
double MeasurementA { get; set; }
double MeasurementB { get; set; }
double MeasurementC { get; set; }
}
仅循环:
foreach(var cls1 in listObj1)
{
int tempA = cls1.PropertyA;
foreach(var cls2 in cls1.dictObj2)
{
double tempB = cls2.MeasurementB;
}
}
过滤/高效环路:
foreach(var cls1 in listObj1.Where(c1=> c1.PropertyA > 5 && c1.PropertyB > 3))
{
int tempA = cls1.PropertyA;
foreach(var cls2 in cls1.dictObj2.Where(c2=> c2.MeasurementA >= 10))
{
double tempB = cls2.MeasurementB;
}
}