gpt4 book ai didi

c# - 从具有 List 作为属性的对象列表中获取唯一值

转载 作者:太空狗 更新时间:2023-10-29 20:46:01 25 4
gpt4 key购买 nike

为了说明的目的,我有一个简单的 Employee 类,它有几个字段和一个删除 Certifications 属性中多次出现的方法

public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }

private List<string> certifications = new List<string>();
public List<string> Certifications
{
get { return certifications; }
set { certifications = value; }
}

public List<string> RemoveDuplicates(List<string> s)
{
List<string> dupesRemoved = s.Distinct().ToList();
foreach(string str in dupesRemoved)
Console.WriteLine(str);
return dupesRemoved;
}

RemoveDuplicates 方法将删除 Employee 对象的 Certifications 属性中的所有重复字符串。现在考虑我是否有一个 Employee 对象列表。

 Employee e = new Employee();
List<string> stringList = new List<string>();
stringList.Add("first");
stringList.Add("second");
stringList.Add("third");
stringList.Add("first");
e.Certifications = stringList;
// e.Certifications = e.RemoveDuplicates(e.Certifications); works fine

Employee e2 = new Employee();
e2.Certifications.Add("fourth");
e2.Certifications.Add("fifth");
e2.Certifications.Add("fifth");
e2.Certifications.Add("sixth");

List<Employee> empList = new List<Employee>();
empList.Add(e);
empList.Add(e2);

我可以用

foreach (Employee emp in empList)
{
emp.Certifications = emp.RemoveDuplicates(emp.Certifications);
}

从列表中的所有员工那里获取所有唯一认证的列表,但我想在 LINQ 中执行此操作,类似于

stringList = empList.Select(emp => emp.Certifications.Distinct().ToList());

这给了我一个错误提示

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Collections.Generic.List<string>>' to 'System.Collections.Generic.List<string>'. An explicit conversion exists (are you missing a cast?)  

如何从 Employee 对象列表中获取唯一认证列表?

最佳答案

据我了解,您需要所有员工的所有独特认证的列表。这将是 SelectMany 的工作:

var uniqueCerts = empList.SelectMany(e => e.Certifications).Distinct().ToList();

关于c# - 从具有 List<string> 作为属性的对象列表中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com