Я хотел бы нормализовать данные в DataTable insertRows
без ключа. Для этого мне нужно идентифицировать и пометить дубликаты записей, найдя их ID (import_id
). После этого я выберу только отдельные. Подход, о котором я думаю, состоит в том, чтобы сравнить каждую строку со всеми строками в этой таблице данных insertRows
Столбцы в DataTable не известны во время разработки, и ключ отсутствует. С точки зрения производительности таблица будет содержать от 10 до 20 тысяч записей и около 40 столбцов
Как мне добиться этого, не жертвуя при этом производительностью?
Я пытался использовать linq, но я не знал, как динамически указывать критерии where
Здесь я сравниваю имена и фамилии в цикле для каждой строки
</p>
<blockquote>
<pre><code>foreach (System.Data.DataRow lrows in importDataTable.Rows)
{
IEnumerable<System.Data.DataRow> insertRows = importDataTable.Rows.Cast<System.Data.DataRow>();
var col_matches =
from irows in insertRows
where
String.Compare(irows["fname"].ToString(), lrows["fname"].ToString(), true).Equals(0)
&&
String.Compare(irows["last_name"].ToString(), lrows["last_name"].ToString(),true).Equals(0)
select new { import_id = irows["import_id"].ToString() };
}
Любые идеи приветствуются.
Как найти похожие имена столбцов с помощью linq?> Мой похожий вопрос