C# 如何连接两个实体并从一个实体获取唯一行

C# 如何连接两个实体并从一个实体获取唯一行,c#,linq,entity-framework,C#,Linq,Entity Framework,我有两个实体A和B,每个实体都有一个字段Number,我需要从实体A中获取所有行,其中编号在B中不存在 有什么想法吗?它需要加入吗?这样行吗 var result = entityA.Where(a => !entityB.Any(b => a.Number == b.Number)) 这样行吗 var result = entityA.Where(a => !entityB.Any(b => a.Number == b.Number)) 非常粗糙,但是你可以

我有两个实体
A
B
,每个实体都有一个字段
Number
,我需要从实体
A
中获取所有行,其中
编号在
B
中不存在


有什么想法吗?它需要加入吗?

这样行吗

  var result = entityA.Where(a => !entityB.Any(b => a.Number == b.Number))

这样行吗

  var result = entityA.Where(a => !entityB.Any(b => a.Number == b.Number))

非常粗糙,但是你可以不用这样的连接

var listB = b.Select(o => o.Number).Distinct();

var result = a.Where(o => !listB.Contains(o.Number));

非常粗糙,但是你可以不用这样的连接

var listB = b.Select(o => o.Number).Distinct();

var result = a.Where(o => !listB.Contains(o.Number));

因为你没有提供太多的信息,所以很难说。但也许你可以这样做:

public class TestEntity
{
    public int Number { get; set; }
    public TestEntity(int num)
    {
        Number = num;
    }
}

public void WriteResult()
{
    List<TestEntity> lstA = new List<TestEntity>();
    List<TestEntity> lstB = new List<TestEntity>();
    for (int i = 0; i < 10; i++)
    {
         lstA.Add(new TestEntity(i));
         lstB.Add(new TestEntity(i+4));
    }

    List<TestEntity> result = lstA.FindAll(teA => !lstB.Any(teB => teA.Number == teB.Number)); //This will give you all entities in lstA that does not have any equals in lstB
    foreach (var item in result)
    {
         Console.WriteLine(item.Number);
    }
}
公共类测试
{
公共整数{get;set;}
公共测试(int num)
{
Number=num;
}
}
public void WriteResult()
{
List lstA=新列表();
List lstB=新列表();
对于(int i=0;i<10;i++)
{
添加(新测试实体(i));
添加(新测试实体(i+4));
}
List result=lstA.FindAll(teA=>!lstB.Any(teB=>teA.Number==teB.Number));//这将为您提供lstA中所有在lstB中没有任何相等项的实体
foreach(结果中的var项目)
{
控制台写入线(项目编号);
}
}

由于您提供的信息不多,很难说清楚。但也许你可以这样做:

public class TestEntity
{
    public int Number { get; set; }
    public TestEntity(int num)
    {
        Number = num;
    }
}

public void WriteResult()
{
    List<TestEntity> lstA = new List<TestEntity>();
    List<TestEntity> lstB = new List<TestEntity>();
    for (int i = 0; i < 10; i++)
    {
         lstA.Add(new TestEntity(i));
         lstB.Add(new TestEntity(i+4));
    }

    List<TestEntity> result = lstA.FindAll(teA => !lstB.Any(teB => teA.Number == teB.Number)); //This will give you all entities in lstA that does not have any equals in lstB
    foreach (var item in result)
    {
         Console.WriteLine(item.Number);
    }
}
公共类测试
{
公共整数{get;set;}
公共测试(int num)
{
Number=num;
}
}
public void WriteResult()
{
List lstA=新列表();
List lstB=新列表();
对于(int i=0;i<10;i++)
{
添加(新测试实体(i));
添加(新测试实体(i+4));
}
List result=lstA.FindAll(teA=>!lstB.Any(teB=>teA.Number==teB.Number));//这将为您提供lstA中所有在lstB中没有任何相等项的实体
foreach(结果中的var项目)
{
控制台写入线(项目编号);
}
}

在这里发布一些代码给你一个想法..在这里发布一些代码给你一个想法..实际上。。。我喜欢乔安娜的回答实际上。。。我喜欢乔安娜的回答