Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于C#/LINQ中对象列表的类似值属性,检查属性是否唯一_C#_Linq - Fatal编程技术网

基于C#/LINQ中对象列表的类似值属性,检查属性是否唯一

基于C#/LINQ中对象列表的类似值属性,检查属性是否唯一,c#,linq,C#,Linq,我看到许多几乎相似的场景被询问,但找不到满足我需求的解决方案。我有一个对象列表,在该列表中,我想获得具有相似/重复属性但该对象中另一个属性具有不同值的对象。 比如说, 列表: 与上述示例中的情况类似;假设每个员工都有一个唯一的CubeNo,我想找到分配给多个员工的CubeNo 我可以通过以下查询得到结果;但我相信有更优雅的方式来实现这一点。感谢所有的建议 var idealList = (from g1 in Emp join g2 in Emp on g1.CubeNo equals g

我看到许多几乎相似的场景被询问,但找不到满足我需求的解决方案。我有一个对象列表,在该列表中,我想获得具有相似/重复属性但该对象中另一个属性具有不同值的对象。 比如说,

列表

与上述示例中的情况类似;假设每个员工都有一个唯一的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();
对于示例类,我有:

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"},
};
公共类1
{
公共字符串属性1{get;set;}
公共字符串属性2{get;set;}
}
var ListOfObject=新列表
{
新类别1{Property1=“A1”,Property2=“X1”},
新类别1{Property1=“B1”,Property2=“Y1”},
新类别1{Property1=“A1”,Property2=“Z1”},
新类别1{Property1=“B1”,Property2=“Y1”},
};

哪些“以下查询”?请提供一个-目前很难理解您的问题。嗨,Jon Skeet,谢谢您的回复。我是按问题编辑的。那不是。。。请提供我们可以复制、粘贴、编译和运行的内容。这将避免诸如“谢谢,但很抱歉,上面的查询对我不起作用”之类的问题,我们应该能够更改您的代码(但不是输入),并查看预期的输出,在这一点上,有相当高的信心它就是您想要的。我已经修改了我的问题。非常感谢。但你还没有提供一份报告。恐怕现在我放弃了——在你忽略这个请求的情况下,我只能多次要求你改进这个问题。你好,Maksim Simkin,谢谢,但很抱歉,上面的问题对我不起作用(.我的第一个查询能够成功地过滤出重复的场景,但现在我需要从该列表中过滤具有相同属性1但不同属性2值的对象。你想拥有具有相同属性1但不同属性2的对象,不是吗?你能举个例子说明到底出了什么问题吗?嗨,Maksim,我已经更新了我的任务ion,谢谢你的帮助!@geecee但是你的查询给了我和我完全一样的结果。或者我用它错了吗?我用Property1替换了DuplicateField,用Property2Hi Maksim替换了uniquefield。我真的很感谢你的耐心和努力来帮助我解决我的挑战。但是我仍然用你共享的代码获得了更多的记录也许是因为我的要求太差了。但是非常感谢!
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"},
};