Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试根据属性类型从DataTable中删除特定列_C#_Datatables_Propertydescriptor - Fatal编程技术网

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);
}