Csharp/C#教程:数据结构列表列表 – 如何使用linq访问?分享


数据结构列表列表 – 如何使用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()函数

像这样的东西……

上述就是C#学习教程:数据结构列表列表 – 如何使用linq访问?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/951758.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐