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项目)
{
控制台写入线(项目编号);
}
}
在这里发布一些代码给你一个想法..在这里发布一些代码给你一个想法..实际上。。。我喜欢乔安娜的回答实际上。。。我喜欢乔安娜的回答