2016-08-14 73 views
0

我有这个疑问联接返回意外的值

var q = from internalMaterialIssueVocherDetail in _ctx.InternalMaterialIssueVoucherDetails 
     where internalMaterialIssueVocherDetail.InternalMaterialIssueVoucherId == Id 
     join line in _ctx.Lines on internalMaterialIssueVocherDetail.LineId equals line.Id 
     join material in _ctx.Materials on line.Id equals material.LineId 

我在InternalMaterialIssueVoucherDetails 1个纪录,这个表有使用Linesmaterial的关系。在我的material表中,我有20条记录,并且输出重复20次,具有相同的值。

为什么?我该如何解决这个问题?

这里是主查询

var q = from internalMaterialIssueVocherDetail in _ctx.InternalMaterialIssueVoucherDetails 
     where internalMaterialIssueVocherDetail.InternalMaterialIssueVoucherId == Id 
     join line in _ctx.Lines on internalMaterialIssueVocherDetail.LineId equals line.Id 
     join joint in _ctx.Joints on internalMaterialIssueVocherDetail.JointId equals joint.Id 
     join sheet in _ctx.Sheets on joint.SheetId equals sheet.Id 
     join material in _ctx.Materials on line.Id equals material.LineId 
     //join materialDescription in _ctx.MaterialDescriptions on material.MaterialDescriptionId equals materialDescription.Id 
     join testPackageJoint in _ctx.TestPackageJoints on joint.Id equals testPackageJoint.JointId 
     join testPackage in _ctx.TestPackages on testPackageJoint.TestPackageId equals testPackage.Id 
     select new ViewIMIV() 
        { 
         // ItemCode = materialDescription.ItemCode, 
         // MaterialDescription = materialDescription.Description, 
         SheetNumber = sheet.SheetNumber, 
         LineNumber = line.LineNumber, 
         TestPackageNumber = testPackage.PackageNumber, 
         QuantityDeliverToMember = internalMaterialIssueVocherDetail.QuantityDeliverToMember.ToString(), 
         //Size = materialDescription.Size1 
        }; 
+0

哪里是你的选择条款?请发布完整的查询。 – user3185569

+0

@ user3185569它嘈杂,你需要吗? –

+0

@ user3185569我更新了文章 –

回答

1

您可以使用Distinct删除重复:

(from ........ 
select new 
{ 
    ItemCode = materialDescription.ItemCode, 
    MaterialDescription = materialDescription.Description, 
    SheetNumber = sheet.SheetNumber, 
    LineNumber = line.LineNumber, 
    TestPackageNumber = testPackage.PackageNumber, 
    QuantityDeliverToMember = internalMaterialIssueVocherDetail.QuantityDeliverToMember.ToString(), 
    Size = materialDescription.Size1 
}).Distinct().Select(x => new ViewIMIV() 
{ 
    ItemCode = x.ItemCode, 
    MaterialDescription = x.MaterialDescription, 
    SheetNumber = x.SheetNumber, 
    LineNumber = x.LineNumber, 
    TestPackageNumber = x.TestPackageNumber, 
    QuantityDeliverToMember = x.QuantityDeliverToMember, 
    Size = x.Size 
}).ToList(); 
+0

我的功能的结果是iqueryable –

+0

@MehrdadGhaffari为什么IQueryable?任何特定的有效原因? – user3185569

+0

没有具体的理由让我改变它列表 –