C# 查找小于或等于该值的所有元素

C# 查找小于或等于该值的所有元素,c#,arrays,C#,Arrays,我是c语言的新手,我有这样一个数组: int[] cost = new int[] {10, 15, 20, 30, 50}; 查找/获取小于或等于该值的所有值的最简单代码是什么 给定值为29,将返回20、15和10。以下是最简单的操作之一: var resultArray = cost.Where(item => item <= 29).ToArray(); Where或Array.FindAll函数对数组或IEnumerable中的每个元素调用lambda函数,并仅返回lam

我是c语言的新手,我有这样一个数组:

int[] cost = new int[] {10, 15, 20, 30, 50};
查找/获取小于或等于该值的所有值的最简单代码是什么


给定值为29,将返回20、15和10。

以下是最简单的操作之一:

var resultArray = cost.Where(item => item <= 29).ToArray();
Where或Array.FindAll函数对数组或IEnumerable中的每个元素调用lambda函数,并仅返回lambda函数返回true的项目。 更新

看起来您编辑了原始问题以删除对查找索引的引用,因此下面的内容不再相关。上面的内容查找元素的值,而不是元素的索引。但下面显示了如何查找满足条件的数组元素的值和索引:

你提到了索引。此版本还查找原始数组的索引,而不仅仅是满足条件的元素:

List<int> indexesInvolved = new List<int>();
var resultArray = cost.Where((item, index) =>
    { 
        if (item <= 29) {
            indexesInvolved.Add(index);
            return true;
        } 
        else {
            return false;
        } 
    }
 ).ToArray();
var foundIndexArray = indexesInvolved.ToArray();

添加了对索引的跟踪。很好的回答。代码的最后一位在imo中可读性更好,就好像item>29返回false一样;涉及的索引。添加索引;返回true;第一个代码只给我1个元素,20而不是20,15,10,第二个代码给我1个索引too@Rapoix不,它给出了所有三个元素。Where将过滤掉所有与条件项不匹配的项是的,但我没有更改逻辑。不知道为什么最初只有一个元素。
Boolean int func(int x)
{
    if (x<=29) {
        return true;
    } else {
      return false;
    }
}
List<int> indexesInvolved = new List<int>();
var resultArray = cost.Where((item, index) =>
    { 
        if (item <= 29) {
            indexesInvolved.Add(index);
            return true;
        } 
        else {
            return false;
        } 
    }
 ).ToArray();
var foundIndexArray = indexesInvolved.ToArray();