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
}
我有一个名为 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
}