将列表复制到另一个列表,但不包括列表类型的某些属性

Tho*_*ald 3 c# list dynamic anonymous-types

这似乎应该很容易,但我无法找到一个整洁的方法来做到这一点.

随着课程

class SomeType
{ 
   public int SomeInteger {get;}
   public string SomeString {get;}
   public object SomeObject {get;}
}
Run Code Online (Sandbox Code Playgroud)

假设从某个地方检索SomeType列表,但我需要从列表中的每个项目中删除SomeString字段.所以我遍历列表,创建一个匿名类型并将其添加到新列表中.

List<SomeType> list = GetList();

var newList = new List<dynamic>();
list.ForEach(item => newList.Add(new { SomeInteger = item.SomeInteger, SomeObject = item.SomeObject });
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,这不需要我创建一个动态类型的空列表?我可能错了,但感觉这不是最好的方法.

Sel*_*enç 7

那么你可以直接创建一个匿名类型列表,这将是强类型的:

list.Select(item => new 
                    { 
                        SomeInteger = item.SomeInteger, 
                        SomeObject = item.SomeObject
                    }).ToList();
Run Code Online (Sandbox Code Playgroud)