我有一个类似于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属性中列出的列。
答案 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);