如何制作独特......更加鲜明?

时间:2013-05-14 16:10:15

标签: c# linq

好吧,除了愚蠢的头衔。我有一个查询提取不同的值,但它包含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.

以下是文档内容:

Image enter image description here

如果它有帮助,departmentID是主键。所以departmentID 1将始终指向相同的名称,依此类推。

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();