3

2つのオブジェクトがあります。

class User{
 public int id{get;set;}
 public string name{get;set;}
}

class UserProtectedDetails{
 public string name{get;set;}
}

どうすれば変換できList<User>ますList<UserProtectedDetails>か?

リフレクションでそれを行う方法を知っていますが、Linqまたは他の.NETの方法でそれを行う方法はありますか?

4

2 に答える 2

3

とにかくlinqまたは他の.netの方法でそれを行うことはありますか?

もちろん:

List<User> list = ...; // Make your user list
List< UserProtectedDetails> = list
    .Select(u => new UserProtectedDetails{name=u.name})
    .ToList();

編集:(コメントへの応答)その部分を避けたい場合は{name = u.name}、(1)マッピングを作成する関数、または(2)パラメーターUserProtectedDetailsを受け取るそのコンストラクターのいずれかが必要です。User

UserProtectedDetails(User u) {
    name = u.name;
}

いずれにせよ、name = u.name割り当てはどこかで行う必要があります。

于 2012-08-18T12:24:20.063 に答える
0

まあ、それは同じくらい簡単かもしれません

var userList = new List<User>();

var userProtectedDetailsList = userList.Select(u => 
    new UserProtectedDetails { name = u.name }
)
.ToList();
于 2012-08-18T12:25:06.660 に答える