如何使用LINQ查找List<float[]>中数组长度满足指定阈值的元素索引?
LINQ 实现方案
核心使用 LINQ 中支持传入元素索引的Select重载,先将每个数组元素和它在原列表中的索引绑定,过滤符合长度要求的元素后再提取索引即可,代码示例如下:
// 构造示例数据 List<float[]> dataList = new List<float[]> { new float[100], new float[80], new float[101] }; // 指定允许的最大数组长度 int maxLength = 100; // 执行查询获取符合要求的原列表索引 List<int> resultIndexes = dataList .Select((array, originalIndex) => new { Array = array, OriginalIndex = originalIndex }) .Where(item => item.Array.Length <= maxLength) .Select(item => item.OriginalIndex) .ToList();
上述示例运行后得到的resultIndexes值为[0, 1],和需求预期一致。
注意:不要直接使用
Where的索引重载后再提取索引,过滤后的新序列索引和原列表索引不对应,会得到错误的结果。
内容的提问来源于stack exchange,提问作者Abhinav Pandey
相关产品推荐
相关产品推荐

