C# 尝试根据属性类型从DataTable中删除特定列
我正在尝试以与添加列相同的方式删除特定类型的列,除了使用C# 尝试根据属性类型从DataTable中删除特定列,c#,datatables,propertydescriptor,C#,Datatables,Propertydescriptor,我正在尝试以与添加列相同的方式删除特定类型的列,除了使用.Columns.remove() 我使用linq获取道具类型,然后使用forEach()删除列。我得到一个错误: 严重性代码说明项目文件行抑制状态 错误CS1503参数1:无法从“System.Collections.Generic.IEnumerable”转换为“System.Data.DataColumn”Fabitrack C:\Data\repositories\Fabitrack\Fabitrack\Models\ReportB
.Columns.remove()
我使用linq获取道具类型,然后使用forEach()
删除列。我得到一个错误:
严重性代码说明项目文件行抑制状态
错误CS1503参数1:无法从“System.Collections.Generic.IEnumerable”转换为“System.Data.DataColumn”Fabitrack C:\Data\repositories\Fabitrack\Fabitrack\Models\ReportBusinessLogic.cs 141 Active
下面是我的代码:
//*Removing DOB from XLS file columns*/
var dob = from PropertyDescriptor props in pvPersonProps
where props.PropertyType.Name.Contains("dob")
select props.PropertyType;
foreach(PropertyDescriptor prop in pvPersonProps) {
table.Columns.Remove(dob);
}
如果有人好奇我是如何添加到表中的,这里有一些代码
var pvPersonProps = TypeDescriptor.GetProperties(typeof(PVPersonDTO)); //get prop info from PVPersonDTO object
var pvValResProps = TypeDescriptor.GetProperties(typeof(PVValidationDTO)); //get prop info from PVValidationDTO object
DataTable table = new DataTable();
/*Adding colums for Person collection*/
foreach (PropertyDescriptor prop in pvPersonProps) //iterate prop info from PVPersonDTO object and create column structure
{
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
}
dob
是您案例中的一个集合
因此,您可以执行以下操作:
foreach (var dobItem in dob)
{
table.Columns.Remove(dobItem);
}
或
谢谢,但是我仍然收到一个转换错误:严重性代码描述项目文件行抑制状态错误CS1503参数1:无法从“System.Type”转换为“System.Data.DataColumn”Fabitrack C:\Data\repositories\Fabitrack\Fabitrack\Models\ReportBusinessLogic.cs 141 Active尝试调用
table.Columns.Remove(dob.ToString())
然后您按名称调用delete列,它现在符合要求,但我收到一个运行时错误,告诉我dob不包含任何元素。也许我的linq有问题。@Jacked\u Nerd可能没有带dob的属性
var dob = (from PropertyDescriptor props in pvPersonProps
where props.PropertyType.Name.Contains("dob")
select props.PropertyType).First();
foreach (PropertyDescriptor prop in pvPersonProps)
{
table.Columns.Remove(dob);
}