说我有以下列表:
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的查询。
谢谢。
答案 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);