FWIW, я считаю, что код сложнее для понимания, чем простой вызов DataTable.Select , который также позволяет фильтровать, а также сортировать по родительским или дочерним таблицам, если необходимо.
var keys = ds.Tables["SourceKeys"].Select(...)
foreach (var key in keys)
{
int id = key["sourceKeyID"];
...
}
Конечно, предполагается, что между таблицами определено DataRelation s.
Единственное, на что я не на 100% уверен, что вы могли бы сделать, это отсортировать по каналам в методе Select, так как эта таблица является родственным ключом источника, а не родителем / дочерним отношением.
РЕДАКТИРОВАТЬ: другой подход, который вы, возможно, захотите рассмотреть: если у вас есть (вложенные) отношения данных, то, возможно, DataSet.GetXml (), а затем запросить это с помощью LinqToXml?