尝试使用LINQ连接两个表,没有任何显示

时间:2013-12-13 01:06:54

标签: 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 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
    }

尝试从单个表中查询按预期工作,这只是加入我遇到问题的表。

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你说你的第二个代码示例也没有给出结果。您的代码生成INNER JOIN。请尝试以下示例代码,该代码将为您提供LEFT JOIN

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匹配的实际值。