C# 尝试使用LINQ连接两个表时,没有显示任何结果

C# 尝试使用LINQ连接两个表时,没有显示任何结果,c#,asp.net,sql,.net,linq,C#,Asp.net,Sql,.net,Linq,我一直在尝试使用ASP.NET与数据库交互的各种方法。为此,我创建了一个包含四个表的数据库,使用基于它们的标识规范的关系将它们链接在一起 我正在尝试使以下查询正常工作: from k in Klantens join b in Bestellingens on k.Klantnr equals b.B_klantnr join r in Bestelregels on b.Bestelnr equals r.Br_bestelnr join a in Artike

我一直在尝试使用ASP.NET与数据库交互的各种方法。为此,我创建了一个包含四个表的数据库,使用基于它们的标识规范的关系将它们链接在一起

我正在尝试使以下查询正常工作:

    from k in Klantens
    join b in Bestellingens on k.Klantnr equals b.B_klantnr
    join r in Bestelregels on b.Bestelnr equals r.Br_bestelnr
    join a in Artikelens on r.Br_artikelnr equals a.Artikelnr

    select new
    {
        k.Kl_anaam,
        k.Kl_vnaam,
        b.B_datum,
        b.B_status,
        a.Artikelnr,
        a.A_omsch,
        a.A_prijs,
        r.Br_aantal
    }
这样做不会返回任何记录。 我试图通过删除部件来找出它为什么不返回任何内容,但即使这样做,它也不会返回任何记录:

    from k in Klantens
    join b in Bestellingens on k.Klantnr equals b.B_klantnr
    select new
    {
        k.Kl_anaam,
        b.B_status
    }
尝试从单个表进行查询的工作与预期的一样,这只是我遇到的表连接问题


提前谢谢

对我有效,你的equals运算符可能有问题吗?k.Klantnr和b.b_Klantnr等是什么类型的


您还知道,这不会返回实际的枚举结果,对吗?它只是返回一个迭代器,然后在需要时枚举它,如果此时数据库已经关闭,那么任何事情都可能发生(希望是异常,但并不总是如此)。如果这是一种可能性,那么尝试对结果调用ToList(),以强制立即执行查询。

您说过您的第二个代码示例也没有给出任何结果。代码生成一个
内部联接
。尝试下面的示例代码,它将为您提供
左连接

from k in Klantens
join b in Bestellingens on k.Klantnr equals b.B_klantnr into j
from b in j.DefaultIfEmpty()
select new
{
    k.Kl_anaam,
    b.B_status
}

看看它给了你什么,以及
Bestellingens.B_klantnr
中是否有与
Klantens.klantnr

匹配的值。每个以“nr”结尾的字段都是一个int。没有下划线的字段也被设置为标识符和键值。在仔细查看之后,我发现了一个名为“LINQPad4”的程序,它允许您连接到数据库并在其中测试我的查询。我在文章中提到的两个查询都不是,所以我猜测它实际上可能是数据库本身中的某个东西?使用该查询返回两条记录,根据我在其中输入的内容,这是正确的。然而,它似乎无法读取b中的内容。字段,即使我将它们换成该表中具有不同类型的其他字段。但是它正在正确读取k.Kl_anaam中的值。Is
Bestellingens.B_klantnr
字段包含
NULL
值?或者这些值与Klantens.Klantnr不匹配?哇,我就是这样一个工具。事实证明,当我在该表中填充记录的数据时,由于某种原因,它实际上从未将它们插入。所以是的,它确实包含
NULL
值。现在可以正常工作了,谢谢!