我不使用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...;
它返回的类型与以前不同(列表)
我也试过这个,但我有同样的问题
users = db.Users
.Join(db.Licences, lic => lic.UserID, user => user.UserID, (user, lic) => new { user, lic })