在C#中使用LINQ加入多个表

时间:2013-11-20 09:00:17

标签: c# .net linq entity-framework linq-to-entities

public void getRECDR(string p)
    {
        try
        {
            DBDataContext Database = new DBDataContext();
            var query = (from z in Database.Table01
                         join x in Database.Table02 on
                            new
                            {
                                t1 = z.drNO,
                                t2 = z.RecNO
                            }
                            equals
                            new
                            {
                                t1 = x.DrNO,
                                t2 = x.RecNO
                            } 
                         join c in Database.Table03 on
                            new
                            {
                                t3 = x.DrNO,
                                t4 = x.TicketNo
                            }
                            equals
                            new
                            {
                                t3 = c.DrNo,
                                t4 = c.TicketNO
                            }
                         where z.drNO == p
                         select new
                         {                                 
                             .../// Record data Here
                         }).FirstOrDefault();
                txtbox.text = query.Record01;
                ....// etc.. etc..
        }
        catch (Exception ex)
        { MessageBox.Show(ex.Message.ToString()); }
    }

如何以正确的方式加入Linq的桌子? 我曾经这样做,但它有一个像“指定演员”的错误。

起初,我认为这是因为我的标头表的主键重复,我在已经删除的详细信息表上将主键与外键匹配,但它仍然显示相同的错误。

我的Linq加入代码是对的吗?

请帮忙。感谢。

---更新

我在MS SQL查询中尝试了这个,如果它获取它确实拾取的数据

SELECT * FROM [Database.Table01] INNER JOIN
            [Database.Table02] ON [Database.Table01].drNO = [Database.Table02].DrNO AND [Database.Table01].RecNO = [Database.Table02].RecNO INNER JOIN 
            [Database.Table03] ON [Database.Table01].DrNO = [Database.Table03].DrNO AND [Database.Table02].TicketNo = [Database.Table03].TicketNo
WHERE [Database.Table01].drNO = '00884'

这个查询语句会获取数据但是当我在我的linq上执行时它会说“指定的强制转换无效”..并且它具有相同的记录存储相同的连接。

0 个答案:

没有答案