2
表A具有 - ID(PK),部分号码,代码1,代码2LINQ到实体性能问题哪里,并可包含
表B有 - InventoryID(PK)部分号码,第一部分,和一堆其他列。
我需要从表B得到的一切,其中表B的部分号码未在表A.
例:表B有部分号码123.在表A没有PARTNUMBER为123获取该行。
我目前有:
using (SomeEntity context = new SomeEntity())
{
var partmasterids = context.PartsMasters.Select(x => x.PartNumber).Distinct().ToList();
var test = context.Parts.Where(x => !partmasterids.Contains(x.PartNumber)).ToList();
}
我现在先把并选择所有从表A.
然后不同的部件号我检查表A和表B的partnumbers,并得到各部分表B哪里的零件号码不在表A中。
表B中约有11,000条记录,表A中有200,000条记录。 我应该得到约9000个零件不在表A中。
我遇到了第二条LINQ语句的巨大性能问题。如果我做一个.Take(100),那甚至需要20-30秒。 1000以上的任何东西都会花费太长时间。
有没有更好的方法来编写这个LINQ语句?
TableA和TableB是否有某种关联?或者他们彼此独立? –
他们是独立的。 – Triforce711
如果您将partmaster添加到HashSet(假设PartNumber是一个int),那么使用列表时查找起来会更快。你可以做HashSet (... Distinct())。试试看看性能是否更好。 –
SledgeHammer