C# 使用LINQ循环外部类集合中的内部类属性并按外部类属性分组

C# 使用LINQ循环外部类集合中的内部类属性并按外部类属性分组,c#,linq,group-by,C#,Linq,Group By,利用Q&A处理对象属性的循环,如果您有: Class1对象的集合,即listObj1 每个类别1包含属性和类别2对象的集合,即dictObj2 您将如何: 有效地确定内部类Class2的属性 循环遍历内部类Class2的属性 循环通过Class1对象的集合listObj1,选择Class2属性的所有实例 输出Class2属性的集合,例如,第一次迭代将返回MeasurementA集合,每个Class1对象一个。 并按Class1.PropertyA和Class1.PropertyB对集合进行分组

利用Q&A处理对象属性的循环,如果您有:

Class1对象的集合,即listObj1 每个类别1包含属性和类别2对象的集合,即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;
    }
}