【发布时间】:2014-01-02 14:54:01
【问题描述】:
我有一个元素列表,其中元素是一些字符串和日期时间值的类。我的情况是列表中的某些元素是相同的,但我只想要唯一的条目。我尝试了以下但没有结果。而且我已经确认有重复条目。以下是一些片段:
public class RunningProcess
{
public string PSComputerName { get; set; }
public string ProcessName { get; set; }
public string ProcessID { get; set; }
public string CommandLine { get; set; }
public Nullable<System.DateTime> CreationDate { get; set; }
public string Username { get; set; }
public string RemoteIP { get; set; }
}
现在:
l_runningprocesses = l_runningprocesses.Distinct().ToList();
或
var unique_items = new HashSet<RunningProcess>(l_runningprocesses);
或
List<RunningProcess> uniques = new List<RunningProcess>();
foreach (RunningProcess item in l_runningprocesses)
{
if (!uniques.Contains(item)) uniques.Add(item);
}
都一样。我保留双打。有什么想法吗??
问候,
罗纳德
【问题讨论】:
-
您还没有为您的类定义 Equals 和 GetHashCode,因此通过引用比较条目 - 如果引用不同,则条目被视为不同(即使所有字段值都相等)
-
您需要更具体地说明您认为不同的内容,在这种情况下,
ProcessID将始终不同,因此不同的列表应该与非不同的列表相同。 -
l_runningprocesses ?它的类型是什么,