Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从c中的列表中删除具有重复属性的对象#_C#_Asp.net_List - Fatal编程技术网

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上有很多实现。包括慢速比较区分。我应该在标准中写什么?我想要复制值?我应该在条件中写什么?我想要复制值吗?