3

我有两个对象。

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 回答