C#/ .NET 4.0中的一个新功能是,您可以在foreach不获取异常的情况下更改您的枚举.请参阅Paul Jackson的博客文章"并发的有趣副作用:在枚举时从集合中删除项目"以获取有关此更改的信息.
执行以下操作的最佳方法是什么?
foreach(var item in Enumerable)
{
foreach(var item2 in item.Enumerable)
{
item.Add(new item2)
}
}
Run Code Online (Sandbox Code Playgroud)
通常我使用IList一个缓存/缓冲区直到结束foreach,但是有更好的方法吗?
我目前正在将字段从上传的Excel文档映射到数据表。我希望未选择的列被删除,但它们仍然显示。
这是我的代码:
if(DT.Columns.IndexOf("First Name") != -1)
DT.Columns["First Name"].ColumnName = "First NameMap";
DT.Columns[mapping.FirstNameColumnId].ColumnName = "First Name";
if (DT.Columns.IndexOf("Last Name") != -1)
DT.Columns["Last Name"].ColumnName = "Last NameMap";
DT.Columns[mapping.LastNameColumnId].ColumnName = "Last Name";
if (DT.Columns.IndexOf("Email Address") != -1)
DT.Columns["Email Address"].ColumnName = "Email AddressMap";
DT.Columns[mapping.EmailColumnId].ColumnName = "Email Address";
int ColumnCounter = 0;
foreach(DataColumn column in DT.Columns)
{
if(ColumnCounter != mapping.FirstNameColumnId && ColumnCounter != mapping.LastNameColumnId && ColumnCounter != mapping.EmailColumnId)
{
DT.Columns.Remove(column);
}
}
Run Code Online (Sandbox Code Playgroud)