I have two lists, both using the same class (Part). The first list is the "master" list (engineerParts), the second (partDefaults) is the list of attribute values for those parts.
The first list contains 263 items, the second, 238. So, the final list should contain 263. However it doesn't, it contains 598!!
var partsWithDefaults = from a in engineerParts
join b in partDefaults on
new { a.PartNumber, a.Revision }
equals
new { b.PartNumber, b.Revision } into j1
from j2 in j1.DefaultIfEmpty()
select new Part()
{
NewPart = isNewPart(a.PartNumber, PadRevision(a.Revision), concatenateRevision),
PartNumber = concatenateRevision == true ? string.Concat(a.PartNumber, PadRevision(a.Revision)) : a.PartNumber,
Revision = concatenateRevision == true ? "" : a.Revision,
ParentPart = a.ParentPart,
Description = a.Description,
BoMQty = a.BoMQty,
UoM = (j2 != null) ? j2.UoM : null,
ClassId = (j2 != null) ? j2.ClassId : null,
ShortDescription = (j2 != null) ? j2.ShortDescription : null,
ABCCode = (j2 != null) ? j2.ABCCode : null,
BuyerId = (j2 != null) ? j2.BuyerId : null,
PlannerId = (j2 != null) ? j2.PlannerId : null,
OrderPolicy = (j2 != null) ? j2.OrderPolicy : null,
FixedOrderQty = (j2 != null) ? j2.FixedOrderQty : null,
OrderPointQty = (j2 != null) ? j2.OrderPointQty : null,
OrderUpToLevel = (j2 != null) ? j2.OrderUpToLevel : null,
OrderQtyMin = (j2 != null) ? j2.OrderQtyMin : null,
OrderQtyMax = (j2 != null) ? j2.OrderQtyMax : null,
OrderQtyMultiple = (j2 != null) ? j2.OrderQtyMultiple : null,
ReplenishmentMethod = (j2 != null) ? j2.ReplenishmentMethod : null,
ItemShrinkageFactor = (j2 != null) ? j2.ItemShrinkageFactor : null,
PurchasingLeadTime = (j2 != null) ? j2.PurchasingLeadTime : null,
MFGFixedLeadTime = (j2 != null) ? j2.MFGFixedLeadTime : null,
PlanningTimeFence = (j2 != null) ? j2.PlanningTimeFence : null,
FulfillMethod = (j2 != null) ? j2.FulfillMethod : null,
ItemStatus = (j2 != null) ? j2.ItemStatus : null,
TreatAsEither = (j2 != null) ? j2.TreatAsEither : false,
AltItem1 = (j2 != null) ? j2.AltItem1 : null,
AltItem2 = (j2 != null) ? j2.AltItem2 : null,
AltItem3 = (j2 != null) ? j2.AltItem3 : null,
AltItem4 = (j2 != null) ? j2.AltItem4 : null,
AltItem5 = (j2 != null) ? j2.AltItem5 : null,
DesignAuthority = (j2 != null) ? j2.DesignAuthority : null,
Level = a.Level
};
return partsWithDefaults.ToList<Part>();