C# Linq以确保没有两个对象具有相同的属性值
我有一个叫做Alarm的类,它有一个叫做Description的属性C# Linq以确保没有两个对象具有相同的属性值,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我有一个叫做Alarm的类,它有一个叫做Description的属性 public class Alarm { public string Description { get; set; } } 在警报列表中,我必须确保列表中没有两个警报具有相同的描述 public class Alarm { public string Description { get; set; } } 我想使用linq执行此检查,并获取具有重复描述的报警列表var distinctAlarms=ala
public class Alarm
{
public string Description { get; set; }
}
在警报列表中,我必须确保列表中没有两个警报具有相同的描述
public class Alarm
{
public string Description { get; set; }
}
我想使用linq执行此检查,并获取具有重复描述的报警列表
var distinctAlarms=alarms.GroupBy(a=>a.description)。选择(I=>I.First()).ToList()代码>
这应该可以做到var distinctAlarms=alarms.GroupBy(a=>a.Description)。选择(i=>i.First()).ToList()代码>
var dups = Alarms
.GroupBy(a=>a.Description)
.Where(a=>a.Count()>1)
.SelectMany(a=>a);
那应该可以
var dups = Alarms
.GroupBy(a=>a.Description)
.Where(a=>a.Count()>1)
.SelectMany(a=>a);
或
或
如果您不想找到哪些报警被复制,您也可以这样做:
if (list.Select(alarm => alarm.Description).Distinct().Count() != list.Count)
{
// Has duplicate
}
如果您不想找到哪些报警被复制,您也可以这样做:
if (list.Select(alarm => alarm.Description).Distinct().Count() != list.Count)
{
// Has duplicate
}
你想在插入新项目时检查它吗?不。我想检查报警列表。在所有三个答案下面,你评论说你想要一个重复列表,但我在问题中没有看到。有点困惑…谢谢你指出它。我已经做了更正。你想在插入新项目时检查它吗?不。我想检查警报列表。在所有三个答案下面,你评论说你想要一个重复列表,但我在问题中没有看到。有点困惑…谢谢你指出它。我已经改正了,这里少了一些东西。这只会返回不同的警报。如果有重复的就不用了。谢谢格兰特。但是我想要一个查询来查找重复的而不是不同的报警。这里缺少一些东西。这只会返回不同的警报。如果有重复的就不用了。谢谢格兰特。但是我想要一个查询来找到重复的而不是不同的报警。很好的答案。我想要的是一份副本清单。谢谢,罗伯特,回答得好。我想要的是一份副本清单。谢谢,罗伯特,很好的逻辑。但是我想要一份重复项目的清单。是的。只是把它放在这里作为一种选择,因为@Robert McKee首先回答好逻辑,伊安。但是我想要一份重复项目的清单。是的。只是把它放在这里作为一种选择,因为@Robert McKee首先回答