C# 从c中的列表中删除具有重复属性的对象#
我有一个列表,我想创建一个没有重复值记录的新列表C# 从c中的列表中删除具有重复属性的对象#,c#,asp.net,list,C#,Asp.net,List,我有一个列表,我想创建一个没有重复值记录的新列表 public List<links> results = new List<links>(); public List<links> final_results = new List<links>(); public class links { public string url { get; set; } public string title { get; set; }
public List<links> results = new List<links>();
public List<links> final_results = new List<links>();
public class links
{
public string url { get; set; }
public string title { get; set; }
public string description { get; set; }
public int place { get; set; }
}
但当我将我的中继器绑定到这个新列表时,什么都没有改变。
如何使用此重复值?如果要在3个前缀
url
、标题和说明中禁止相等的记录,则必须按它们进行分组:
final_results = results.GroupBy(n => new {n.url, n.description, n.title})
.Select(g => g.FirstOrDefault()).ToList();
如果要禁止在3个前缀url
、title
和description
中具有相等值的记录,则必须按它们进行分组:
final_results = results.GroupBy(n => new {n.url, n.description, n.title})
.Select(g => g.FirstOrDefault()).ToList();
嗯,你可以这样做:
var results = results.DistinctBy(x=> x.url);
或者,如果要通过多个字段排除,最简单的方法是:
var results = results.DistinctBy(x=> x.url + "," + x.title + "," + x.description);
如果您想正确地执行此操作,只需覆盖对象的Equal和GetHashCode方法,并将值放入HashSet
为了更好地工作,您可以增加您的.NET版本或只使用morelink。嗯,您可以只执行以下操作:
var results = results.DistinctBy(x=> x.url);
或者,如果要通过多个字段排除,最简单的方法是:
var results = results.DistinctBy(x=> x.url + "," + x.title + "," + x.description);
如果您想正确地执行此操作,只需覆盖对象的Equal和GetHashCode方法,并将值放入HashSet
为了更好地工作,您可以增加您的.NET版本或只使用MoreLINQ。尝试通过链接使用Except扩展方法
final_results = results.Except(--duplicate criteria--)
尝试在链接上使用Exception扩展方法
final_results = results.Except(--duplicate criteria--)
我不相信什么都没有改变,因为它应该起作用。但是不清楚您是否只想检查单个属性url
,或者三个属性url
,title
,description
的组合是否相等。您可以发布一些示例数据吗?您是否检查最终结果的内容
或其他内容?如果检查HTML控件,则可能绑定到了错误的数据。@mary,我想你需要的是一个扩展方法。@TimSchmelter我认为检查哪个属性并不重要,因为just Place属性是唯一的。@PanagiotisKanavos我使用了一个Repeater并将其绑定到列表中,我想复制记录。我不相信什么都没有改变,因为它应该工作。但是不清楚您是否只想检查单个属性url
,或者三个属性url
,title
,description
的组合是否相等。您可以发布一些示例数据吗?您是否检查最终结果的内容
或其他内容?如果检查HTML控件,则可能绑定到了错误的数据。@mary,我认为您需要的是一个扩展方法。@TimSchmelter我认为检查哪个属性并不重要,因为just Place属性是唯一的。@PanagiotisKanavos我使用一个Repeater并将它绑定到我要复制的列表records@mary您正在将中继器绑定到repeater.DataSource=final\u results;Repeater.DataBind()代码>?@fubo如你所说的Rep.DataSource=最终结果;Rep.DataBind()@mary您将中继器绑定到repeater.DataSource=final\u results;Repeater.DataBind()代码>?@fubo如你所说的Rep.DataSource=最终结果;Rep.DataBind();确切地说,我不能用DistinctBy来表示结果,那就自己写吧。在stackoverflow上有很多实现。包括慢速比较differention.tnx我不能使用DistinctBy作为结果,那么就自己写吧。在stackoverflow上有很多实现。包括慢速比较区分。我应该在标准中写什么?我想要复制值?我应该在条件中写什么?我想要复制值吗?