检查 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 属性中列出的列。
有几种方法可以换皮 - 这是一个选项:
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);