以下哪项是使用LINQ to SQL从相关表中读取属性的最佳方法?
var users = (from user in db.users.Where(u => u.Id > 10)
select new User
{
UserName = u.UserName
UserId = u.Id,
Address1 = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).Address1,
Address2 = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).Address2,
Address3 = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).Address3,
City = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).City,
State = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).State,
Zip = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress).Zip
}).ToList();
OR
var users = (from user in db.users.Where(u => u.Id > 10)
select new
{
UserName = u.UserName
UserId = u.Id,
Address = u.UserAddress.FirstOrDefault(a => a.IsHomeAddress)
}).ToList();
users.ForEach(u => {
u.Address1 = u.Address.Address1,
u.Address2 = u.Address.Address2,
u.Address3 = u.Address.Address3,
u.City = u.Address.City,
u.State = u.Address.State,
u.Zip = u.Address.Zip
});
还是有更好的方法?
答案 0 :(得分:3)
我建议使用let,即:
var users = (
from user in db.users
where user.Id > 10
let homeAddress = user.UserAddress.First(a => a.IsHomeAddress)
select new User
{
UserName = user.UserName
UserId = user.Id,
Address1 = homeAddress.Address1,
Address2 = homeAddress.Address2,
Address3 = homeAddress.Address3,
City = homeAddress.City,
State = homeAddress.State,
Zip = homeAddress.Zip
}).ToList();