检查IEnumerable上的字符串

时间:2013-10-11 14:41:59

标签: c# .net linq

我有一个类似于ColumnInfo类的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属性,显示了字符串列名。

我已经填充了一些包含一些列的DataTable。

我需要从数据表中删除不属于我的IEnumerable的列,其属性为ColumnName。我需要在我的数据表中只列出我在ColumnName属性中列出的列。

2 个答案:

答案 0 :(得分:3)

有几种方法可以使用这个 - 这是一个选项:

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

答案 1 :(得分:2)

您可以使用此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);