[C#] Converter 泛型委派

摘要:[C#] Converter 泛型委派

C# 要從一個List 轉成另一個List 時,可以用ConvertAll方法來做這之間的轉換,其中使用的就是Converter泛型委派。透過Converter我們也可以自己對特定的物件實作轉換方法。

 

設計情境

假設從DataTable中取出某個欄位轉換成我們想要的List<T>

 

設計實作

1.在DataRowCollections上寫個擴充方法


public static List<TOutput> ConvertCollection<TOutput>this DataRowCollection Rows,Converter<Datarow,TOutput> func)
        {
            List<TOutput> list = new List<TOutput>();
            foreach (DataRow item in Rows)
            {
                list.Add(func.Invoke(item));
            }
            return list;
       }

2.接著就可以使用這個擴充方法轉換我們想要的List<T>,當然轉換的方法實作是交給使用的PG來寫的


  List<string> list = dt.Rows.ConvertCollection<string>(
              new Converter<DataRow,string>(dr => {
              return dr["Field"].ToString();
              }));

參考來源