在实体框架中连接三个表并仅获取第一行的结果而不是所有行

时间:2015-10-21 21:00:22

标签: asp.net-mvc entity-framework linq-to-sql

我正在尝试加入三个SALES,PRODUCT和USERS表。 从他们的ID中获取来自DB的PRODUCT和USER名称 SALES表。

问题是:它只计算并获得销售表第一行的结果。

这是守则。

                                  
            var saleslist = (
                from sale in db.Sales
                join p in db.Products on sale.sale_id equals p.product_id
                join u in db.Users on sale.user_id equals u.user_id

                select new SalesView
                {
                    sale_id = sale.sale_id,
                    sale_amount = sale.sale_amount,
                    sale_time = sale.sale_time,
                    product_name = p.product_name,
                    user_name = u.user_first_name
                }).ToList();
          
            return View(saleslist);

SalesView是一个模型类,用于在视图中显示计算结果。

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您在Products表上的加入不正确。变化

join p in db.Products on sale.sale_id equals p.product_id

join p in db.Products on sale.product_id equals p.product_id

答案 1 :(得分:0)

考虑到您具有正确的联接属性,请尝试以下操作:

var saleslist = (
            from sale in db.Sales
            join p in db.Products on sale.sale_id equals p.product_id into temp
            from t in temp join u in db.Users on t.user_id equals u.user_id into temp2 
            from t2 in temp2
            select new SalesView
            {
                sale_id = sale.sale_id,
                sale_amount = sale.sale_amount,
                sale_time = sale.sale_time,
                product_name = t.product_name,
                user_name = t2.user_first_name
            }).FirstOrDefault();

        return View(saleslist);