C# 检查IEnumerable上的字符串
我有一个此类ColumnInfo的IEnumerableC# 检查IEnumerable上的字符串,c#,.net,linq,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 Colum
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属性,它显示字符串列名
我已经用一些列填充了数据表
我需要从数据表中删除不在具有属性ColumnName的IEnumerable中的列。在我的datatable中,我只需要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);
}
List columnsToRemove=new List();
foreach(数据列dc在dt.列中)
{
if(list.Any(ci=>ci.ColumnName==dc.ColumnName))
{
继续;
}
columnsToRemove.Add(dc);
}
foreach(columnsToRemove中的数据列dc)
{
dt.列。移除(dc);
}
有几种方法可以对其进行蒙皮-这里有一个选项:
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);
}
List columnsToRemove=new List();
foreach(数据列dc在dt.列中)
{
if(list.Any(ci=>ci.ColumnName==dc.ColumnName))
{
继续;
}
columnsToRemove.Add(dc);
}
foreach(columnsToRemove中的数据列dc)
{
dt.列。移除(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);
var columnsToRemove=table.Columns.Cast()
.Where(col=>!columnInfos.Any(ci=>ci.ColumnName==col.ColumnName))
.ToList();
foreach(columnsToRemove中的DataColumn列)
表.列.删除(列);
您可以使用此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);
var columnsToRemove=table.Columns.Cast()
.Where(col=>!columnInfos.Any(ci=>ci.ColumnName==col.ColumnName))
.ToList();
foreach(columnsToRemove中的DataColumn列)
表.列.删除(列);
或list.Any(ci=>ci.ColumnName==dc.ColumnName)
切换到使用cleaner Any样式,并在您评论时留下了Neo的要点,Eren。我相信我必须从下到上计数,因为只要我删除一项,foreach就会给我一个错误或list.Any(ci=>ci.ColumnName==dc.ColumnName)
。切换到使用cleaner Any样式,并在您评论时留下Neo分数,Eren。我相信我必须从下到上计数,因为一旦我删除一个项目,foreach会给我一个错误发布更多代码。也许我们可以为您找到linq soultion!?请发布更多代码,也许我们可以为您找到一个linq解决方案!?