Linq确保没有两个对象具有相同的属性值

时间:2017-06-08 03:17:59

标签: c# linq linq-to-objects

我有一个名为Alarm的类,其中包含一个名为Description的属性。

public class Alarm
{
    public string Description { get; set; }
}

在警报列表中,我要确保列表中没有两个警报具有相同的描述。

我想使用linq进行此检查,获取具有重复说明的警报列表

3 个答案:

答案 0 :(得分:4)

var dups = Alarms
  .GroupBy(a=>a.Description)
  .Where(a=>a.Count()>1)
  .SelectMany(a=>a);

if (Alarms
  .GroupBy(a=>a.Description)
  .Where(a=>a.Count()>1)
  .Any())
{
  throw new Exception("You got dups!");
}

答案 1 :(得分:3)

var distinctAlarms = alarms.GroupBy(a => a.Description).Select(i => i.First()) .ToList();

应该这样做

答案 2 :(得分:1)

如果您不想查找哪些警报重复,您也可以这样做:

if (list.Select(alarm => alarm.Description).Distinct().Count() != list.Count)
{
    // Has duplicate
}