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