【发布时间】:2017-12-10 00:27:04
【问题描述】:
我有一个List<Demo>
public class Demo
{
public Demo()
{
}
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}
Id 属性对于列表中的每条记录都是唯一的。
如何从原始 List<Demo> 中获得 List<Demo>,其中包含名称和标题相同的所有重复项。
到目前为止我做了什么,但我得到的是一条记录:
List<Demo> demo = new List<Demo>();
demo.Add(new Demo()
{
Id = 1,
Name = "Demo",
Title = "A"
});
demo.Add(new Demo()
{
Id = 2,
Name = "Demo",
Title = "A"
});
demo.Add(new Demo()
{
Id = 3,
Name = "Demo",
Title = "A"
});
demo.Add(new Demo()
{
Id = 4,
Name = "Demo1",
Title = "A"
});
demo.Add(new Demo()
{
Id = 5,
Name = "Demo2",
Title = "A"
});
然后我在做:
var duplicates = demo.GroupBy(t => new { t.Name, t.Title })
.Where(t => t.Count() > 1)
.Select(g => g.Key).ToList();
从上面的示例中,我应该得到一个 List<Demo>,其中前 3 个项目的 ID 为:1、2、3,因为名称和标题相同。
【问题讨论】:
-
@LeiYang:没有,还是返回了一条记录。
-
是的,您只会得到一个结果 - 但这是一个包含三个元素的组。请记住,您可以有多个组(例如多个“Demo2/A”记录)。目前尚不清楚您在这种情况下的期望。
-
@user2818430 你是什么意思?如果您尝试使用链接的方法,请粘贴您的最新代码。