[英]List to Datatable and add column
我有通用列表...我正在尝试将其转换为数据表。
我正在使用下面的代码。
private DataTable ToDataTable<T>(List<T> items)
{
var tb = new DataTable(typeof(T).Name);
PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in props)
{
Type t = GetCoreType(prop.PropertyType);
tb.Columns.Add(prop.Name, t);
}
foreach (T item in items)
{
var values = new object[props.Length];
for (int i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
tb.Rows.Add(values);
}
return tb;
}
我需要在该数据表中添加另一列,例如StatusText
。
该数据表中已经有一个列,称为Status
。
如果此StatusText
0,则StatusText
应为Active
;如果为1,则StatusText
将为Inactive
像我的代码当前返回下表...
Id Name Status
------------------
1 Test 1
2 Test1 0
3 Test2 0
但是,如何生成如下表?
Id Name Status StatusText
------------------------------
1 Test 1 InActive
2 Test1 0 Active
3 Test2 0 Active
尝试这个
DataTable dt = ToDataTable(your list); // Get DataTable From List
dt.Columns.Add(new Column("StatusText", typeof(string))); // Add New Column StatusText
//Iterate All Rows
foreach(DataRow row in dt.Rows)
{
//Check Status value, and set StatusText accordingly.
row["StatusText"] = int.Parse(row["Status"])==1 ? "InActive" : "Active";
}
只需在您的班级定义中添加以下内容:
public string StatusText
{
get
{
if(status == 0)
return "Active";
else
return "InActive";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.