private void SortRecursiveTable(ref MainDataSet.ArticleDataTable output, ref MainDataSet.ArticleDataTable input, Guid? parentArticleId) { OrderedEnumerableRowCollection<MainDataSet.ArticleRow> query = null; if (parentArticleId.HasValue) query = input.Where(w => w.IsParentArticleGuidNull() ? false : w.ParentArticleGuid.Equals(parentArticleId.Value)).OrderBy(o => o.Subject); else query = input.Where(w => w.IsParentArticleGuidNull()).OrderBy(o => o.Subject); foreach (MainDataSet.ArticleRow row in query) { output.ImportRow(row); SortRecursiveTable(ref output, ref input, row.ArticleGuid); } }