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