检索通用列表项索引

时间:2012-05-02 08:04:03

标签: c# linq lambda

我有一个列表如下。我想检索所有值为1的项目的索引。

        List<int> listFilter = new List<int>();

        listFilter.Add(1);
        listFilter.Add(0);
        listFilter.Add(0);
        listFilter.Add(1);

上面的示例数据我应该得到0和3。

下面的代码给出了[value,index]对的对象。如何将其修改为仅输出仅包含索引的列表。

        var val = listFilter.Select((value, index) => new { Value = value, Index = index }).Where(item => item.Value == 1).ToList();

由于

此致 Balan Sinniah

1 个答案:

答案 0 :(得分:3)

问题是在最初的Select子句中,您返回了一个匿名类型。要取消该值,您需要额外Select以后过滤回该值。

var val = listFilter
  .Select((value, index) => new { Value = value, Index = index })
  .Where(item => item.Value == 1)
  .Select(item => item.Index)
  .ToList();