我正在尝试从数据库中提取结果并在选择使用Linq(EF V5.0)时设置子属性。我这样做的原因是因为数据库中没有关系来使用include ..
var lamdaResult = from u in model.Entity_Users
join s in model.Entity_Staff on u.UserID equals s.ST_UserID
select new { u, s };
return lamdaResult.Select(x => x.u.Staff = x.s; return x.u;).FirstOrDefault();
我正在学习Linq ..上面的表达式给了我错误..有人可以帮助我设置子属性的最佳方法......
我也可以这样做..但我想知道是否有更好的方法来实现相同的结果,而不是遵循2个表达式
var user=null;
var lamdaResult = from u in model.Entity_Users
join s in model.Entity_Staff on u.UserID equals s.ST_UserID
select new { u, s };
user = lamdaResult.Select(x => x.u).FirstOrDefault();
user.Staff = lamdaResult.Select(x => x.s).FirstOrDefault();
答案 0 :(得分:4)
Linq用于查询,而不是用于变异对象。你需要使用除LINQ之外的其他东西来进行变异,通常foreach
是合适的,虽然假设你只有一个项目,那么就没有必要:
var item = (from u in model.Entity_Users
join s in model.Entity_Staff on u.UserID equals s.ST_UserID
select new { User = u, Staff = s })
.FirstOrDefault();
item.User.Staff = item.Staff;
return item.User;