gpt4 book ai didi

c# - Linq 获取与条件匹配的索引列表以过滤另一个列表

转载 作者:行者123 更新时间:2023-12-02 03:41:45 25 4
gpt4 key购买 nike

我通过一些像素数学运算得到了一个列表,例如:

List<double> MList = new List<double>(new double[]{ 0.002, 0.123, 0.457, 0.237 ,0.1});

我想使用 Linq 从该列表中检索低于某个值的项目的所有索引,因此如果要比较的值是 0.15,则将得到以下索引:0,1,4

List<double> MClose = new list<double>();
double compare = 0.15;
List<double> MClose = MList.Where(item => item < compare).Select((item,index) => index);

我希望到目前为止一切顺利,然后我想使用这个获得的索引来针对另一个列表使用。这是一个由 RGB 值组成的列表,仅根据该索引选择的值构建一个新列表。

class RGB{int r;int g; int b}
list<RGB>=colors = new RGB(){new RGB[,,]{{10,10,2},{13,11,2},{15,16,17},{33,13,2},{35,116,117}}};

我没有经常使用 Linq,我想知道这是否可以通过 Linq 进行编码,甚至可能是单行代码?,我很好奇答案能有多小。而且(Linq 的像素编辑速度会很快吗),我在这里处理宽度痉挛图,通常是 3x3 到 64x64 像素的数据。

最佳答案

List<double> MClose = MList.Where(item => item < compare).Select((item,index) => index);

首先,您将 MClose 定义为 List<double>但你的最后.Select((item,index) => index)将返回IEnumerable<int> - 这不是一个列表,而是一个可以迭代的集合。使用var自动推断 MClose 的类型,并使用 .ToList()这样迭代的结果只计算一次并存入内存:

var MClose = MList.Where(item => item < compare).Select((item,index) => index).ToList();

然后您可以使用.Where带索引的子句:

var filteredColors = colors.Where((c,index)=> MClose.Contains(index)).ToList();

使用.Contains()仅过滤您在 MClose 中获得的索引。

关于c# - Linq 获取与条件匹配的索引列表以过滤另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com