簡體   English   中英

比較兩個數據表中的數據表單元格

[英]Comparing DataTable cells from two DataTables

我一直在研究一個將使用NLP定義DataTable值的項目。 我已經搞定了那個功能。 但是,在使用DataTables時遇到了一些問題。

我將有兩個不同的數據表,它們的格式都不同

例如:

表格1

|第1欄|

表2

|第1欄|第2欄|

在DataTable2中,第2列是第1列的對應值。我打算比較兩個DataTables的第1列的單元格內容,並通過我的NLP運行它。 如果它們具有一定的匹配百分比,我會將它們寫入另一個DataTable。 如果他們不匹配,我將其留空。 因此,例如:

如果> 75%匹配

表3

| DT1第1行|| DT2第1行| DT2第2列|

如果小於75%

表3

| DT1第1行|| “” |

我要以編程方式實現的目標是可能的嗎? 我考慮過偽代碼,如果它有助於更​​好地解釋它。

foreach(DataRow in Table1)
   foreach(DataRow in Table2)
      if(comparison score >=75.00)
            Write to table3
      else
            Write to table3 with blanks

感謝您在此問題上的任何幫助。 不過,我仍將繼續自己的研究,如果有任何突破,我會回發。

編輯:我剛剛意識到兩個數據表中的行可能不一定對應,所以我必須對所有單元格進行比較。 那可能嗎?

它不一定必須與DataTables一起使用,我願意接受建議。

因此,由於時間限制(和絕望),我想出了一個不錯的解決方案。

我使用了一個嵌套的foreach - for循環遍歷兩個DataTables。 代碼如下:

            foreach (DataRow dRow in dt1.Rows)
            {
                a = dRow[0].ToString();
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    b = dt2.Rows[i][0].ToString();
                    if (hcontroller.GetScore(a, b) >= 90.00)
                    {
                        c = dt2.Rows[i][1].ToString();
                        match = true;
                        break;
                    }
                    else
                    {
                        match = false;
                        continue;
                    }

                }
                if (match)
                {
                    dt.Rows.Add(a, b, c);
                }
                else
                {
                    dt.Rows.Add(a, "No close matches found!", "");
                }
            }

但是,我非常確定,當DataTables達到一定大小時,該操作將占用大量內存。 此外, if語句消除了找到更好匹配的可能性。

我願意接受其他建議。 但是我希望這可以幫助任何陷入我所面臨的同樣問題的人。 干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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