我有一个名为Alarm的类,其中包含一个名为Description的属性。
public class Alarm
{
public string Description { get; set; }
}
在警报列表中,我要确保列表中没有两个警报具有相同的描述。
我想使用linq进行此检查,获取具有重复说明的警报列表。
答案 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
}