选择对象并修改字段linq

时间:2012-04-12 09:39:20

标签: asp.net-mvc linq linq-to-entities

我有以下Linq查询:

 var list = (from user in serviceu.Repository.FindFind(<<filtering nonsense>>)
                            from profile in serviceP.Repository.GetQuery().Where(p => p.userID == user.userID).DefaultIfEmpty()
                            select user ).ToList();

基本上我必须将ProfileId添加到我的用户实体。执行此连接只允许我选择用户元素,但我想更改user.profileID=profile.profileID的值(我已经扩展了对象,因此它具有该字段)。如何以最快的方式完成? 我这样做暂时解决了这个问题:

var list = (from user in serviceu.Repository.Find(<<filtering nonsense>>)
                                from profile in serviceP.Repository.GetQuery().Where(p => p.userID == user.userID).DefaultIfEmpty()
                                select new { user, profile.ProfileID }).ToList(); 

list.ForEach(el =>
                {
                    el.user.ProfileID = el.ProfileID.ToString();
                });

                return list.Select(x => x.user).ToList();


这是最好的(最快/优雅的方式)吗?它能以不同的方式完成吗?

1 个答案:

答案 0 :(得分:2)

而不是ForEach并返回尝试:

return list.Select(c => {c.user.ProfileID = c.ProfileID.ToString(); return c;}).ToList();