将List复制到另一个List,但不包括List类型的某些属性
Copy List to another List, but excluding certain properties of List type
这看起来应该很容易,但我想不出一个整洁的方法。
随着class
class SomeType
{
public int SomeInteger {get;}
public string SomeString {get;}
public object SomeObject {get;}
}
假设从某处检索到 SomeType 列表,但我需要从列表中的每个项目中删除 SomeString 字段。所以我遍历列表,创建一个匿名类型并将其添加到新列表中。
List<SomeType> list = GetList();
var newList = new List<dynamic>();
list.ForEach(item => newList.Add(new { SomeInteger = item.SomeInteger, SomeObject = item.SomeObject });
有没有更好的方法不需要我创建动态类型的空列表?我可能是错的,但感觉这不是最好的方法。
那么你可以直接创建一个匿名类型的列表,这将是强类型的:
list.Select(item => new
{
SomeInteger = item.SomeInteger,
SomeObject = item.SomeObject
}).ToList();
您不需要额外的语句来声明 newList
。 C# 编译器可以自动确定类型。有关详细信息,请参阅 Implicitly typed local variables。
var newList = GetList()
.Select(x => new { SomeInteger = x.SomeInteger, SomeObject = x.SomeObject})
.ToList();
这看起来应该很容易,但我想不出一个整洁的方法。
随着class
class SomeType
{
public int SomeInteger {get;}
public string SomeString {get;}
public object SomeObject {get;}
}
假设从某处检索到 SomeType 列表,但我需要从列表中的每个项目中删除 SomeString 字段。所以我遍历列表,创建一个匿名类型并将其添加到新列表中。
List<SomeType> list = GetList();
var newList = new List<dynamic>();
list.ForEach(item => newList.Add(new { SomeInteger = item.SomeInteger, SomeObject = item.SomeObject });
有没有更好的方法不需要我创建动态类型的空列表?我可能是错的,但感觉这不是最好的方法。
那么你可以直接创建一个匿名类型的列表,这将是强类型的:
list.Select(item => new
{
SomeInteger = item.SomeInteger,
SomeObject = item.SomeObject
}).ToList();
您不需要额外的语句来声明 newList
。 C# 编译器可以自动确定类型。有关详细信息,请参阅 Implicitly typed local variables。
var newList = GetList()
.Select(x => new { SomeInteger = x.SomeInteger, SomeObject = x.SomeObject})
.ToList();