我看到了很多几乎相似的场景,但找不到满足我需求的解决方案。我有一个对象列表,在该列表中,我想获得具有相似/重复属性但对该对象中的另一个属性具有不同值的对象。 例如,
List<Emp>
:
Emp.CubeNo Emp.EmpId
------------------------------
A1 ABC // get this
B1 XYZ
A1 EFG // get this
B2 XXZ
与上例中的情况类似;假设每个员工都有一个独特的CubeNo,我想找到分配给多个员工的CubeNo。
我可以使用以下查询获得结果;但我确信有更优雅的方式来实现这一目标。感谢所有的建议..
var idealList = (from g1 in Emp
join g2 in Emp on g1.CubeNo equals g2.CubeNo
where g1.EmpId != g2.EmpId
select new
{
Property1 = g1.EmpId ,
Property2 = g2.CubeNo
}).ToList();
答案 0 :(得分:0)
ListOfObject.GroupBy(x=>x.Property1)
.Where(x=>x.Count()>1)
.Select(x=>x.GroupBy(y=>y.Property2)
.Where(t=>t.Count()==1))
.Where(x=>x.Any())
.SelectMany(x=>x.SelectMany(t=>t))
我有样本课:
public class Class1
{
public string Property1 {get;set;}
public string Property2 {get;set;}
}
var ListOfObject = new List<Class1>
{
new Class1{Property1 = "A1", Property2 = "X1"},
new Class1{Property1 = "B1", Property2 = "Y1"},
new Class1{Property1 = "A1", Property2 = "Z1"},
new Class1{Property1 = "B1", Property2 = "Y1"},
};