我有两种数据类型:
class MyDataType {
public int Id;
private int Field;
public String AnotherFieldOrProperty;
// + there are some methods
}
class MyDataTypeDescriptor {
public int Id;
public String Description;
}
我需要将List<MyDataType>
转换为List<MyDataTypeDescriptor>
这样的方式:
MyDataTypeDescriptor.Id = MyDataType.Id
MyDataTypeDescriptor.Description = MyDataType.ToString()
;
我猜C#可以在一行代码中轻松快速地完成,但我不知道如何因为我不熟悉这些高级技术。有人会帮我吗?
由于
答案 0 :(得分:4)
这应该这样做(myDataTypes
是List<MyDataType>
):
List<MyDataTypeDescriptor> myDataTypeDescriptors =
myDataTypes.Select(x => new MyDataTypeDescriptor
{
Id = x.Id,
Description = x.ToString()
}).ToList();
答案 1 :(得分:0)
(from i in list1
select new MyDataTypeDescriptor { Id = i.Id, Description = i.ToString()).ToList();
答案 2 :(得分:0)
如果您不想自己编写迭代器,可以使用automapper自动执行此操作。
答案 3 :(得分:0)
您可以使用LINQ Select
方法:
List<MyDataType> list;
// Process list...
List<MyDataTypeDescriptor> result =
list.Select(x => new MyDataTypeDescriptor() { Id = x.Id, Description = x.ToString() }).
ToList<MyDataTypeDescriptor>();
或者如果您有MyDataTypeDescriptor
的构造函数需要Id
和Description
:
List<MyDataType> list;
// Process list...
List<MyDataTypeDescriptor> result =
list.Select(x => new MyDataTypeDescriptor(x.Id, x.ToString())).
ToList<MyDataTypeDescriptor>();
答案 4 :(得分:0)
对于简单转换,您可以使用Select
方法,如下所示:
List<int> lstA = new List<int>();
List<string> lstB = lstA.Select(x => x.ToString()).ToList();
要获得更多的compex转换,请使用ConvertAll
函数,如下所示:
List<int> lstA = new List<int>();
List<string> lstB = lstA.ConvertAll<string>(new Converter<int, string>(StringToInt));
public static string StringToInt(int value)
{
return value.ToString();
}
答案 5 :(得分:0)
您可以使用LINQ
:
var listofMyDataTypeDescriptor = (from m in listOfMyDataType
select new MyDataTypeDescriptor()
{
Id = m.Id,
Description = m.ToString()
}).ToList();
答案 6 :(得分:0)
你实际上无法转换它们,你必须遍历集合并为每个DataType创建一个新的Descriptor
var result = (from MyDataType m in listOfMyDataType select new MyDataTypeDescriptor
{
Id = m.Id,
Description = m.toString(),
}).ToList();
答案 7 :(得分:0)