Sql 在控制器中连接两个语句

Sql 在控制器中连接两个语句,sql,asp.net-mvc-3,linq,Sql,Asp.net Mvc 3,Linq,在控制器中合并两个语句时有问题。这两个语句都可以工作,但不能使它们作为一个元素工作 第一条语句是当用户的用户名与登录的usersname匹配时显示该用户的数据 这个很好用 public ViewResult Index() { var myrecords = db.Customers.Where(UserData => UserData.UserName.Equals (User.Identity.Name)).ToList();

在控制器中合并两个语句时有问题。这两个语句都可以工作,但不能使它们作为一个元素工作

第一条语句是当用户的用户名与登录的usersname匹配时显示该用户的数据 这个很好用

public ViewResult Index()
    {
        var myrecords = db.Customers.Where(UserData => UserData.UserName.Equals
                (User.Identity.Name)).ToList();

        return View(myrecords);
    }
第二条语句用于连接表和显示数据。这个很好用

  var caradverts = db.CarAdverts.Include(c => c.BodyType).Include(c => c.Car).Include(c => c.Colour).Include(c => c.Customer).Include(c => c.EngineSize).Include(c => c.fuel).Include(c => c.SalesPlan).Include(c => c.Transmission).Include(c => c.year);



        return View(caradverts.ToList());
现在的问题是将这两个语句连接到一个语句中,因此它只显示登录用户的数据

欢迎提供任何建议

这个怎么样:

var caradverts = db.CarAdverts
                   .Include(c => c.BodyType)
                   .Include(c => c.Car)
                   .Include(c => c.Colour)
                   .Include(c => c.Customer)
                   .Include(c => c.EngineSize)
                   .Include(c => c.fuel)
                   .Include(c => c.SalesPlan)
                   .Include(c => c.Transmission)
                   .Include(c => c.year)
                   .Where(c => c.Customer.UserName == User.Identity.Name)
                   .ToList();
但是,您真的需要所有这些
Include
语句吗?看起来它们中的大多数引用的是普通的基本属性,而不是相关的实体

另外,因为在第一种情况下,您很可能需要来自单个用户的数据,所以我会将您的查询改写为:

 var userRecord = db.Customers
                    .SingleOrDefault(u => u.UserName == User.Identity.Name);

然后相应地更新您的模型/视图,以处理单个
客户
记录,而不是集合。

就其价值而言,大多数
包含
都是完全冗余的。如果其中一个引用了导航属性,则需要它。但是调用
ToList
将强制EF加载实体属性。