Как программно фильтровать данные

#.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