查询中LINQ等于运算符错误

时间:2018-05-25 17:03:38

标签: vb.net linq

我正在尝试在VB.Net程序中使用LINQ来查询数据库。这是我的查询声明:

Dim query = From p In db.Parts, s In db.Suppliers
            Join sName In db.Suppliers On s.Supplier_ID Equals p.Supplier_ID
            Select p.Part_Number, p.Part_Description, sName

我得到的错误是:

You must reference at least one range variable on both sides of the 'Equals' operator.
Range variable(s) 'p', 's' must appear on one side of the 'Equals' operator, and range variable(s) 'sName' must appear on the other.

我想要做的是,我有一个零件表,其中一个列的外键引用了我的供应商表中的Supplier_ID列。我正在尝试这样做,以便我抓住供应商表中的Supplier_Name字段来显示,而不仅仅是供应商ID。

我尝试在Google上查看的所有内容都显示我加入的语法与我的相同,但很明显我误解了它的实际效果。那我的问题是什么?

由于错误消息,我尝试改变一切,但似乎没有任何工作,错误消息仍然存在,或者我只是得到更多错误。

1 个答案:

答案 0 :(得分:3)

根据microsoft docs(herehere),您有几个问题:

首先,您要在From子句中指定两个表,您只需指定" left"你加入的一部分。

Dim query = From p In db.Parts

其次,在Join子句中,您指定了您未使用的Suppliers(sName)的别名。

Join s In db.Suppliers

您的最终查询应如下所示:

Dim query = From p In db.Parts
        Join s In db.Suppliers On s.Supplier_ID Equals p.Supplier_ID
        Select p.Part_Number, p.Part_Description, sName