为什么这个Linq离开外连接不能按预期工作?

时间:2011-08-03 10:28:14

标签: linq left-join

我有两个列表,都使用相同的类(部分)。第一个列表是“主”列表(engineerParts),第二个列表(partDefaults)是这些部分的属性值列表。

第一个列表包含263个项目,第二个列表包含238.因此,最终列表应包含263.但是它没有,它包含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>();

1 个答案:

答案 0 :(得分:0)

原来这是一个数据问题。在Excel中为第二个列表发送数据的人在其中留下了重复的内容!!!!