我试图弄清楚如何从一个列表中选择不同的值,然后将这些不同的值转换到另一个列表。
我有这个:
型号:
public class Participant
{
public int UserId { get; set; }
public string Name { get; set; }
}
控制器代码:
List<Participant> participants = new List<Participant>();
participants = project
.QuickView
.Select(x => new Participant { x.UserId, x.FullName})
.Distinct()
.ToList();
这似乎让我得到了不同的值UserId和FullName,但不是我需要的List格式。我得到一个IEnumerable格式而不是List格式。为了让LINQ将结果放入新的参与者列表,我缺少什么?
答案 0 :(得分:1)
你真的不想使用选择。而是使用自定义IEqualityComparer与Distinct方法。像这样的东西
public class CustomEqualityComparer : IEqualityComparer<Participant>
{
public bool Equals(Participant x, Participant y)
{
return x.UserId == y.UserId && x.Name == y.Name;
}
public int GetHashCode(Participant obj)
{
return new Tuple<int, string>(obj.UserId, obj.Name).GetHashCode();
}
}
然后你的电话会是这样的:
participants = project.QuickView.Distinct(new CustomEqualityComparer()).ToList();