[英]Dynamically produce a DataTable selecting Rows from two other DataTables
[英]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.