求与给定JavaScript去重代码等效的C#实现方案
等效的C#实现方式
假设我们有一个包含Age属性的实体类,比如:
public class Person { public int Age { get; set; } }
并拥有一个该类型的集合(数组或List<Person>),以下是两种等效实现:
方式一:使用LINQ的Distinct()(简洁推荐)
这是最符合C#惯用写法的实现,效果和你提供的JS代码一致,会保留Age值第一次出现的顺序:
var uniqueAges = array.Select(item => item.Age).Distinct().ToList();
方式二:完全复刻JS的过滤逻辑
如果要严格对应原JS代码的执行步骤(先提取所有Age值,再过滤出首次出现的元素),可以这样写:
var ageList = array.Select(item => item.Age).ToList(); var uniqueAges = ageList.Where((value, index) => ageList.IndexOf(value) == index).ToList();
说明
- 两种写法最终都会得到集合中所有
Age属性的唯一值列表,且保留值第一次出现的顺序 - 如果你的集合是数组类型(比如
Person[] array),直接调用上述LINQ方法即可,需确保代码顶部引入了using System.Linq;
内容的提问来源于stack exchange,提问作者user19305733
相关产品推荐
相关产品推荐

