数据结构列表列表 – 如何使用linq访问?

我从一个访问文件的软件制造商处获得了ac#程序,并给出了一份数据结构列表

List<List> RasterSet = new List<List>(); 

这给了我一个“索引”的列表

 RasterSet Count = 100 [0]Count = 400 [1]Count = 411 

等等。 在那些我有另一个“索引”列表,其中包含实际的数据结构

 [0] [X] [Y] [Z] ... [399] [X] [Y] [Z] 

所以现在我需要访问列表列表中数据结构的X,Y,Z部分。 例如,是否可以使用LINQ来表示

 if (RasterSet[i] >= 0 && Rasterset[i] = zZ); 

给我一个“索引”[0]到[10]中包含的所有Z值的平均值,每个索引都有数百或数千个二级索引,每个索引都有[x] [y] [ z]值?

编辑:我拼凑了一个双重foreach,通过从复杂结构制作一个正常列表,然后在该列表上使用普通linq。 我仍然喜欢一气呵成。 感谢大家的建议

要获得总平均值:

 var average = RasterSet.SelectMany(x => x).Average(x => xZ); 

要获取索引0-10中子列表的平均值,请执行以下操作:

 var average = RasterSet.GetRange(0, 10).SelectMany(x => x).Average(x => xZ); 

如果我理解你需要什么:

 RasterSet.SelectMenu(rs => rs.Take(11)).Average(x => xZ) 

我建议使用以下代码

 RasterSet.Take(10).SelectMany(x => xZ).Average(); 

如果要进行分页,也可以使用Skip()函数

像这样的东西……

 var avg = from i in RasterSet let innerRasterSet = RasterSet[i] where i > 0 && i <= 10 select innerRasterSet.Average(z=> zZ);