日期:2014-05-20  浏览次数:20763 次

【共享】根据属性名称去除集合重复项
利用linq写个方法。根据属性名去除 集合重复项。欢迎大家探讨
C# code

public IList<T> FilterRepeat<T>(IList<T> t, string attName)
{
    if (t.Count <= 0)
        return t;

    #region 查找attName所在的位置
    int index = -1;
    for (int i = 0; i < t[0].GetType().GetProperties().Count(); i++)
    {
        if (t[0].GetType().GetProperties()[i].Name == attName)
        {
            index = i;
            break;
        }
    }
    #endregion

    if (index == -1)
        return t;

    IList<T> result = new List<T>();
    var sr = from s in t group s by s.GetType().GetProperties()[index].GetValue(s, null);
    foreach (var group in sr)
        result.Add(group.ToList()[0]);
    return result;
}




------解决方案--------------------

------解决方案--------------------
去除重复项可以用 Enumerable.Distinct