簡體   English   中英

如何轉換清單 <SomeType> 列出 <AnotherType> ?

[英]how to convert List<SomeType> to List<AnotherType>?

我有兩種數據類型:

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#只需一行代碼就能非常輕松,快速地做到這一點,但是我不知道怎么做,因為我不熟悉這種高級技術。 有人可以幫我嗎?

謝謝

應該這樣做(其中myDataTypes是您的List<MyDataType> ):

List<MyDataTypeDescriptor> myDataTypeDescriptors = 
     myDataTypes.Select(x => new MyDataTypeDescriptor 
                                 { 
                                      Id = x.Id, 
                                      Description = x.ToString() 
                                 }).ToList();
(from i in list1 
 select new MyDataTypeDescriptor { Id = i.Id, Description = i.ToString()).ToList();

如果您不想自己編寫迭代器,則可以使用automapper為您自動完成。

您可以使用LINQ Select方法來做到這一點:

List<MyDataType> list;
// Process list...
List<MyDataTypeDescriptor> result = 
    list.Select(x => new MyDataTypeDescriptor() { Id = x.Id, Description = x.ToString() }).
         ToList<MyDataTypeDescriptor>();

或者,如果您有一個MyDataTypeDescriptor的構造函數,該構造函數MyDataTypeDescriptor一個Id和一個Description

List<MyDataType> list;
// Process list...
List<MyDataTypeDescriptor> result = 
    list.Select(x => new MyDataTypeDescriptor(x.Id, x.ToString())).
         ToList<MyDataTypeDescriptor>();

對於簡單的轉換,您可以使用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();
}

您可以使用LINQ做到這一點:

var listofMyDataTypeDescriptor = (from m in listOfMyDataType
                                 select new MyDataTypeDescriptor()
                                 {
                                     Id = m.Id,
                                     Description = m.ToString()
                                 }).ToList();

您實際上無法轉換它們,必須遍歷集合並為每個DataType創建一個新的Descriptor

var result = (from MyDataType m in listOfMyDataType select new MyDataTypeDescriptor
{
   Id = m.Id,
   Description = m.toString(),
}).ToList();

只是增加一種方式

定義一個明確的用戶類型轉換MSDN

然后做

var newlist = MyDataTypleList.Cast<MyDataTypeDescriptor>().ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM