C# 如何从List<User>集合中获取uNames与输入uName匹配的元素索引
错误原因
你原有代码的问题如下:
List<T>的索引器us[下标]仅支持传入整数下标获取对应位置的元素,不能直接传入属性名批量访问所有元素的对应属性List<T>的IndexOf方法是直接匹配集合中的完整User对象,无法直接匹配对象的单个属性值
正确实现
方案1:使用List自带的FindIndex方法(最简洁)
Console.Write("Username : "); string inputUname = Console.ReadLine(); // 查找uNames属性与输入值匹配的第一个元素的索引,未匹配返回-1 int j = us.FindIndex(user => user.uNames == inputUname); // 索引有效性判断 if (j >= 0) { // 匹配成功的后续逻辑 Console.WriteLine($"匹配元素索引:{j}"); } else { Console.WriteLine("未找到匹配的用户名"); }
方案2:手动遍历实现(兼容所有版本语法)
Console.Write("Username : "); string inputUname = Console.ReadLine(); int j = -1; for (int i = 0; i < us.Count; i++) { if (us[i].uNames == inputUname) { j = i; break; } }
注意事项
如果存在多个元素的uNames属性与输入值匹配,上述两种方案都只会返回第一个匹配项的索引;如果需要获取所有匹配项的索引,可将结果存储为List<int>类型,遍历所有元素收集符合条件的下标即可。
内容的提问来源于stack exchange,提问作者Leny Mirtasari
相关产品推荐
相关产品推荐

