这个LINQ查询有什么问题(加入)

时间:2013-10-10 21:46:17

标签: linq

供应商Vendorsid PointTo

      123   456 
      456   412 
      789   853 

项目StandardItemNumber VendorSID SerialNumber

    1234    123 A1234
    4567    123 A4567
    8523    456 A8523
    1234    456 A1234

从程序中,我得到123并指向456.我想检查123中的项目是否已经存在于供应商456下面。因此,dupes应该给我项目1234,因为它与供应商456具有相同的序列号。 但是欺骗行为根本没有被执行。它挂在那个声明上。

var vendors = db.hp_GetEligibleVendors();
var items = from i in db.Items 
            where i.VendorID.Equals(vendors.VendorID)
            select i;

foreach(var vendor in vendors)
{   
    var items = from i in db.Items 
                where i.VendorSID.Equals(vendor.VendorSID)
                select i;

    var dupes = from oi in items join di in db.Items
                on new 
                   { 
                       oi.ItemNumber,
                       oi.SerialNumber
                   }
                equals new 
                   { 
                       ItemNumber = di.ItemNumber,
                       SerialNumber = di.SerialNumber
                   }
                where di.VendorSID.Equals(vendor.PointToVendorSID)
                select oi;
}

在上面的查询中,获取欺骗需要永远。这个查询出了什么问题?

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题。我不得不添加ItemNumber = oi.ItemNumber,SerialNumber = oi.SerialNumber。这解决了问题。感谢所有回复的人。