Linq根据列值C#删除重复记录

时间:2017-03-28 13:50:09

标签: c# linq oop lambda

我有一个属性为Items的课程Id, Name, Action

Items列表中填充了重复的项目。

例如:

1     Item1    IT00001    Insert
2     Item1    IT00001    Delete
3     Item3    IT00003    Insert
4     Item4    IT00004    Update

如何使用linq删除列表中的重复项?这样我的输出就是

3     Item3    IT00003    Insert
4     Item4    IT00004    Update

2 个答案:

答案 0 :(得分:0)

下面的代码返回一个新列表,其中包含与Name属性相关的不同项:

    public class Test
    {
        public int Id;
        public string Name;
    }

    public class TestNameComparer : IEqualityComparer<Test>
    {
        public bool Equals(Test x, Test y)
        {
            if (x == null) return y == null;
            return x == y || string.Equals(x.Name, y.Name);
        }

        public int GetHashCode(Test obj)
        {
            return obj.Name.GetHashCode();
        }
    }

和电话:

        //List<Test> list = ...;
        var distinct = list.Distinct(new TestNameComparer());

因此,根据您在计算不同值时要考虑的属性(甚至是多个属性),您可以相应地更改IEqualityComparer。

答案 1 :(得分:0)

你可以用linq:

来做
{{1}}