我如何使用linq获取索引?我想通过FieldNo找到并返回索引。如果我搜索2,则应该返回索引1。
此致
答案 0 :(得分:5)
使用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();
没有使用List.FindIndex
的LINQ,更具可读性和效率,甚至可以在.NET 2上使用:
int index = fields.FindIndex(f => f.FieldNo == 2);
答案 1 :(得分:1)
如果我理解你的问题,那就是你需要的:
Field field = Field.Where(x => x.FieldNo == 2).FirstOrDefault();
if (field != null)
{
Field.IndexOf(field);
}
答案 2 :(得分:0)
我认为你可以使用overload
的{{1}},
.Select
像这样:
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, int, TResult> selector);
但我认为如果你的收藏在内存中会有效,否则会导致异常