#.net #sql #datatable #dataset #datarow
#.net #sql #данные #набор данных #поток данных
Вопрос:
Мне нужно решить очень-очень простую проблему с фильтром, но я новичок в использовании таблиц данных, потоков данных и так далее. Решение, которое я предложил, сильно пахнет. Я почти уверен, что это лучший способ реализовать это.
Здесь объясняется простая проблема:
У меня есть две таблицы данных, называемые ветвями и наборами изменений. Таблица данных, называемая branches, содержит все записи в системе, и мне нужно отфильтровать те ветви, на которые нет ссылок в записях набора изменений. Набор изменений ссылается на ветвь в поле с именем FIDBRANCH.
Например. Предположим, что таблица данных содержит 6 ветвей и 3 набора изменений. Ссылаются только на ветви с идентификаторами 4 и 5.
BRANCHES
1
2
3
4
5
6
CHANGESETS
references to branch 4
references to branch 5
references to branch 5
Результатом будет набор данных branches, отфильтрованный только по ветвям 4 и 5.
Это мой плохой подход:
private void FilterUnusedBranches(DataTable branches, DataTable changesets)
{
// index referenced branch ids
ArrayList branchIds = new ArrayList();
foreach (DataRow row in changesets.Rows)
{
long id = Convert.ToInt64(row["FIDBRANCH"]);
branchIds.Add(id);
}
IList<DataRow> notNeededRows = new List<DataRow>();
// get a list of non-referenced rows
foreach (DataRow row in branches.Rows)
{
long id = Convert.ToInt64(row["BRID"]);
if (!branchIds.Contains(id))
{
notNeededRows.Add(row);
}
}
// remove not needed rows
foreach (DataRow row in notNeededRows)
{
branches.Rows.Remove(row);
}
}
Ответ №1:
Вы, я хочу создать связь данных между таблицами данных tow.
Это может помочь вам … http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/f122d7f4-3b7d-4d93-bd0f-8bb57cd990a4