好吧,除了愚蠢的头衔。我有一个查询提取不同的值,但它包含departmentID
列而不是departmentName
列。这让我有时会造成重复。
ViewBag.DepartmentList = docs.Select(m => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)m.departmentID).Trim(),
Text = m.departmentName
})
.Distinct(); // Fill the viewbag with a unique list of 'Department's from the table.
以下是文档内容:
如果它有帮助,departmentID
是主键。所以departmentID 1
将始终指向相同的名称,依此类推。
答案 0 :(得分:5)
您可以使用IEqualityComparer
class MyComparer<T> : IEqualityComparer<T> where T : SelectListItem
{
public bool Equals(T x, T y)
{
return x.Value == y.Value ;
}
public int GetHashCode(T obj)
{
return obj.Id.GetHashCode();
}
}
然后你的代码
ViewBag.DepartmentList = docs.Select(m => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)m.departmentID).Trim(),
Text = m.departmentName
})
.Distinct(new MyComparer<SelectListItem>()).ToList();