Linq - 如何获取列表中值的位置

时间:2011-08-26 11:05:19

标签: linq

说我有以下列表:

 List<int> integerList = new List<int> {
    1, 10, 13, 5, 7, 123, 47, 69, 22, 77, 94, 201, 120, 73, 98, 99, 101, 4, 6, 9, 19, 21, 24, 221, 909, 45, 27, 28, 29, 30,
   };

Linq查询将为我检索列表中某个值的索引?换句话说,如果我将值传递给'123',我想要一个返回给我的索引值为5的查询。

谢谢。

3 个答案:

答案 0 :(得分:4)

最简单的方法是不使用LINQ:)

int index = integerList.IndexOf(123);

但是,如果你必须:

var index = integerList.Select((value, index) => new { value, index })
                       .Where(x => x.value == desiredValue)
                       .Select(x => (int?) x.index)
                       .FirstOrDefault();

如果无法找到值,那么将为您提供int?的“null”值,否则为第一个匹配的索引。您可以使用空合并运算符将其转换为常规“使用-1未找到”:

var index = integerList.Select((value, index) => new { value, index })
                       .Where(x => x.value == desiredValue)
                       .Select(x => (int?) x.index)
                       .FirstOrDefault() ?? -1;

答案 1 :(得分:0)

var result = integerList
          .Select((i, idx) => new 
                       {
                            Index = idx, 
                            Value = i})
          .Where(comp => comp.Value == 123)
          .FirstOrDefault();

答案 2 :(得分:0)

尝试下面的

var index= list.IndexOf(123);