![](/img/trans.png)
[英]What is the best way to generate code files in C# from template file apart from T4 [on hold]
[英]C# Best way to remove all datatables apart from one
我想刪除一個數據集中的所有數據表。 我已經試過了:-
foreach (DataTable table in DtSet.Tables)
{
if (table.TableName != "tblAccounts")
{
DtSet.Tables.Remove(table);
}
}
但我得到一個
“集合已被修改;枚舉操作可能無法執行。” 錯誤
。
您無法在枚舉期間修改集合。 但是您可以使用for-loop
:
for (int i = DtSet.Tables.Count - 1; i >= 0; i--)
{
var table = DtSet.Tables[i];
if (table.TableName != "tblAccounts")
DtSet.Tables.Remove(table);
}
在foreach
期間嘗試修改集合時,都會得到此提示。 它與集合的迭代方式有關。
您可以通過兩種方法完成操作-一種方法是在循環中確定要刪除的表,然后再返回並刪除它們。 我認為以下方法會起作用:
var tablesToRemove = new List<DataTable>();
foreach (DataTable table in DtSet.Tables)
{
if (table.TableName != "tblAccounts")
{
tablesToRemove.Add(table);
}
}
foreach (DataTable table in tablesToRemove)
{
DtSet.Tables.Remove(table);
}
只是把它扔在那里,因為它未經測試但沒有循環。
var accounts = DtSet.Tables["tblAccounts"];
DtSet.Tables.Clear();
DtSet.Tables.Add(accounts);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.