簡體   English   中英

C#刪除除一個以外的所有數據表的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM