1、自己写的一个demo,记录下来,按照编码ID去除的重复
.aspx中
<div>
<asp:Repeater ID="rpTest" runat="server">
<ItemTemplate>
<font color="red">编号</font>:<%#Eval("ID") %>
<font color="red">名称</font>:<%#Eval("Name") %>
<font color="red">描述</font>:<%#Eval("Info") %><br />
</ItemTemplate>
</asp:Repeater>
<br />
<asp:Button ID="btnOK" runat="server" Text="去除重复" OnClick="btnOK_Click" />
<asp:Button ID="btnOKs" runat="server" Text="原始数据"
οnclick="btnOKs_Click" />
</div>
.cs文件中
这里别忘了引用using System.Linq;否则Distinct()函数找不到
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
rpTest.DataSource = DataBind();
rpTest.DataBind();
}
}
#region 数据绑定
public List<Test> DataBind()
{
List<Test> list = new List<Test>();
Test t = new Test();
t.ID = 100;
t.Name = "测试1";
t.Info = "描述1";
list.Add(t);
Test t1 = new Test();
t1.ID = 200;
t1.Name = "测试2";
t1.Info = "描述2";
list.Add(t1);
Test t2 = new Test();
t2.ID = 100;
t2.Name = "测试3";
t2.Info = "描述3";
list.Add(t2);
Test t3 = new Test();
t3.ID = 200;
t3.Name = "测试4";
t3.Info = "描述4";
list.Add(t3);
return list;
}
#endregion
#region 按钮事件
protected void btnOK_Click(object sender, EventArgs e)
{
rpTest.DataSource = DataBind().Distinct(new CompanyNameComparer()).ToList();
rpTest.DataBind();
}
protected void btnOKs_Click(object sender, EventArgs e)
{
rpTest.DataSource = DataBind();
rpTest.DataBind();
}
#endregion
#region 重写比较方法
public class CompanyNameComparer : IEqualityComparer<Test>
{
public bool Equals(Test x, Test y)
{
if (x == null)
return y == null;
return x.ID == y.ID;
}
public int GetHashCode(Test obj)
{
if (obj == null)
return 0;
return obj.ID.GetHashCode();
}
}
#endregion
#region 实体
public class Test
{
private int m_ID;
public int ID
{
get { return m_ID; }
set { m_ID = value; }
}
private string m_Name;
public string Name
{
get { return m_Name; }
set { m_Name = value; }
}
private string m_Info;
public string Info
{
get { return m_Info; }
set { m_Info = value; }
}
}
#endregion
demo图
去除重复后