iT邦幫忙

0

C# random問題

各位大大

目前還是新手中
想做一個亂數產生單字,產生到Datatable內
目前的想法是,新增一個ROW (ROWID)去記錄亂數的ID

  Random r = new Random();//產生亂數初始值

                //查看有幾行ROW
                foreach (DataRow item in v_datatable.Rows)
                {
                    
                    
                    item["RowID"] = r.Next(100);
                  
                  
                }

在用去排序

 DataView view = new DataView(v_datatable);
                view.Sort = "RowID DESC ";
                DataTable dt2 = new DataTable();
                dt2 = view.ToTable();
               

在存到LIST
最後會清除ROWID這個欄位

v_datatable.Columns.Remove("RowID");

再按一次按鈕之後再新增一次這個ROW

v_datatable.Columns.Add("RowID", typeof(int));

但是第二次在跑的時候就會出現問題
跑到這段時(下面語法)


                Random r = new Random();//產生亂數初始值

                //查看有幾行ROW
                foreach (DataRow item in v_datatable.Rows)
                {
                    
                    
                    item["RowID"] = r.Next(100);
                  
                  
                }

在產生亂數要加入到ROWID的時候就會出現下面訊息
https://ithelp.ithome.com.tw/upload/images/20211029/20143201EGqPkWZVxn.png

目前嘗試很多方法還找不到原因
不知各位大大是否知道我哪邊的觀念有問題,謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
摩摩楓
iT邦新手 4 級 ‧ 2021-10-29 17:49:54
最佳解答

建議可以將DataView 改成下面這樣

DataView view = new DataView(v_datatable.Copy());
Homura iT邦高手 1 級 ‧ 2021-10-29 17:56:19 檢舉

應該是傳進view之後要修改值會造成錯誤
因為共用同一份的關係
排列完後使用 view.Delete(0);
錯誤也會消失
copy一樣可以解決共用同一份table

ccc1414 iT邦新手 5 級 ‧ 2021-11-01 14:08:44 檢舉

有的,改完之後就正常了 謝謝各位/images/emoticon/emoticon02.gif

1
天黑
iT邦研究生 5 級 ‧ 2021-10-29 17:30:19

再跑迴圈前

v_datatable.Columns.Add("RowID", typeof(int));

這一段已經確定執行過了嗎?

因為你的程式碼,都拆開成一段一段沒辦法確定流程。

1
Samuel
iT邦好手 1 級 ‧ 2021-10-29 20:25:33

你可以把畫面裡的StackTrace選項裡面內容複製起來
貼到notepad看錯在第幾行程式碼喔

我要發表回答

立即登入回答