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

Linq to make sure that no two objects have same property value

我有一个名为 Alarm 的 class 和一个名为 Description 的 属性。

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

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

我想使用 linq 进行此检查并获取具有重复描述的警报列表

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

应该这样做

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!");
}

如果你不想找出哪些告警是重复的,你也可以这样做:

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