检查 IEnumerable 上的字符串

本文关键字:字符串 IEnumerable 检查 | 更新日期: 2023-09-27 18:35:10

我有一个这种类型的类的 IEnumerable 列信息

namespace MyCompany
{
    public class ColumnInfo
    {
        public int Id { get; set; }        
        public string Description { get; set; }
        public int DisplayOrder { get; set; }
        public string ColumnName { get; set; }       
    }
}

在此类中,我有一个 ColumnName 属性,它显示字符串列名。

我已经填充了一个包含一些列的数据表。

我需要从数据表中删除不在我的 IEnumerable 中使用属性 ColumnName 的列。我的数据表中只需要我在 ColumnName 属性中列出的列。

检查 IEnumerable 上的字符串

有几种方法可以换皮 - 这是一个选项:

List<DataColumn> columnsToRemove = new List<DataColumn>();
foreach (DataColumn dc in dt.Columns)
{
    if (list.Any(ci => ci.ColumnName == dc.ColumnName))
    {
        continue;
    }
    columnsToRemove.Add(dc);
}
foreach (DataColumn dc in columnsToRemove)
{
    dt.Columns.Remove(dc);
}

您可以使用以下 linq 查询:

var columnsToRemove = table.Columns.Cast<DataColumn>()
    .Where(col => !columnInfos.Any(ci => ci.ColumnName == col.ColumnName))
    .ToList();
foreach(DataColumn col in columnsToRemove)
    table.Columns.Remove(col);
相关文章: