2012-04-12 81 views
1

我有以下LINQ查询:选择对象,然后修改场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(); 

基本上我要简档添加到我的用户实体。做这个连接只允许我选择用户元素,但是我想改变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(); 


这是最好的(最快/优雅的方式)?它可以做不同的事情吗?

+0

我的建议是更新你的模型有它的配置文件。它很有意义的它有.. – Baz1nga 2012-04-12 09:47:43

+0

在我而言这不是一个选项。我知道...有点吮吸 – 2012-04-12 09:48:44

回答

2

代替的ForEach和返回尝试:

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