由linq列出的FindIndex

ib3*_*3an 4 c# linq linq-to-objects

我如何使用linq获取索引?我想通过FieldNo找到并回到索引.如果我搜索2则应该返回索引1.

在此输入图像描述

问候,

Tim*_*ter 6

使用LINQ:

int index = fields.Select((f, i) => new { Field = f, Index = i})
    .Where(x => x.Field.FieldNo == 2)
    .Select(x => x.Index)
    .DefaultIfEmpty(-1)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

没有LINQ使用List.FindIndex,更具可读性,更高效,甚至可以在.NET 2上运行:

int index = fields.FindIndex(f => f.FieldNo == 2);
Run Code Online (Sandbox Code Playgroud)