Linq设置内部属性的最佳方法

时间:2013-11-18 17:21:41

标签: c# linq-to-sql linq-to-entities entity-framework-5 entity-relationship

我正在尝试从数据库中提取结果并在选择使用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();

1 个答案:

答案 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;