1

私は次の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();


これは最高の (最速/エレガントな方法) ですか? 別の方法で行うことはできますか?

4

1 に答える 1

2

ForEach の代わりに、次を試してください:

return list.Select(c => {c.user.ProfileID = c.ProfileID.ToString(); return c;}).ToList();
于 2012-04-12T18:58:06.070 に答える