.Net Convert DataRow to List of String with DataType Filter- .Net 把DataRow使用數據類型篩選的結果 轉成 字符串列表

在之前的網誌和大家分享了如何 把DataRow 的內容 轉成List Of String

.Net Convert DataRow to List of String – .Net 把DataRow 轉成 字符串列表

今天發現原來他有一個很好的功能可以方便大家去Filter/ 篩選 DataRow上某一種的DataType才 Return出來

我們可以使用.OfType<[Data Type]>() 這個功能…在ItemArray的結果上加以篩選

E.g. 如果我想把這個DataRow上的String Field 取出來.. 我們可以使用

	// 把DataRow的ItemArray 把DataRow Field 轉成了Array...之後使用ofType() 這個功能
	// 去 篩選 想取出的數據類型 E.G. String Data Type 
	// 如果想把他們轉成List我們可以像在之前的網誌一樣用LINQ 把內容轉成 List Of String 
	List contents = dr1.ItemArray.OfType().Select(c =&gt; Convert.ToString(c)).ToList(); 
	

Full Source Code

 DataTable tbl = new DataTable();
    tbl.Columns.Add(new DataColumn("Food_ID", Type.GetType("System.String")));
    tbl.Columns.Add(new DataColumn("Food_Name", Type.GetType("System.String")));
    tbl.Columns.Add(new DataColumn("Price", Type.GetType("System.Decimal")));
    tbl.Columns.Add(new DataColumn("FoodCategory_ID", Type.GetType("System.String")));
            
    // Create Data Row
    DataRow dr1 = tbl.NewRow();
    dr1["Food_ID"] = "00001";
    dr1["Food_Name"] = "Apple";
    dr1["Price"] = 0.99;
    dr1["FoodCategory_ID"] = "00001";
    tbl.Rows.Add(dr1);
	
	// 把DataRow的String Data Type 的Field Extract 出來成List Of String 
	List contents = dr1.ItemArray.OfType().Select(c =&gt; Convert.ToString(c)).ToList(); 
	
	// 輸出結果 - List Of String上有多小 Item
	Console.WriteLine("Number of Items in List of String: " + contents.Count().ToString() );
	
	//使用For Loop把 結果輸出 - 0.99 不在List內..因為他的DataType是 Decimal
	for(int i = 0; i&lt;contents.Count; i++ ){
		Console.WriteLine(contents[i]);
	}

.Net Convert Data Row to List of String with Filter

Hope you find it useful

Leave a Reply