Попытка удалить конкретный столбец из DataTable на основе типа свойства - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь удалить столбец определенного типа таким же образом, как я бы добавил один, за исключением использования .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);

        }

1 Ответ

1 голос
/ 22 апреля 2019

dob - это коллекция в вашем случае.

Так что вы можете сделать что-то вроде:

foreach (var dobItem in dob)
{
     table.Columns.Remove(dobItem);
}

или

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...