【发布时间】:2013-11-04 17:08:27
【问题描述】:
我不使用 linq。我使用 EF 4.0。我总是使用 lambda 表达式来获取我的数据,如下所示:
List<User> users = db.Users
.Include(u => u.Licences)
.Include(u => u.Licences.Select(l => l.LicenceProducts.Select(lp => lp.Product)))
.Include(u => u.UserAddress)
.Include(u => u.Contact)
.Include(u => u.User2)
.Include(u => u.SupportProducts)
.Where(u => u.Type != (int)UserType.Admin)
.OrderBy(u => u.Name)
.ToList();
不幸的是,执行需要很长时间。所以,我想通过使用左连接来改变它,但我没有正确理解连接在 Linq 中的工作方式。
这是我尝试过的:
users = from user in db.Users
join licence in db.Licences on user.UserID equals licence.UserID
join licenceProduct in db.LicenceProducts on licence.LicenceID equals licenceProduct.LicenceID...;
返回的类型,和之前的不一样(List)
我也试过了,但我有同样的问题
users = db.Users
.Join(db.Licences, lic => lic.UserID, user => user.UserID, (user, lic) => new { user, lic })
【问题讨论】:
-
确保您的数据库中有索引。
-
我的数据库中有索引。我只想知道如何使用连接。我相信它会加快查询速度。
标签: c# linq entity-framework join