/// <summary> /// Converts the <paramref name="dataset"/> into a new row <paramref name="inTable"/>. Columns will automatically be created /// for all top level tags that are in <paramref name="onlyTheseTags"/>. /// </summary> /// <param name="dataset"></param> /// <param name="inTable"></param> /// <param name="onlyTheseTags"></param> /// <returns></returns> public static DataRow ToRow(this DicomDataset dataset, DataTable inTable, ICollection <string> onlyTheseTags) { var row = inTable.Rows.Add(); //for each item in the dataset foreach (DicomItem i in dataset) { if (onlyTheseTags.Contains(DicomTypeTranslaterReader.GetColumnNameForTag(i.Tag, false))) { AddColumnValue(dataset, row, i); } } return(row); }
private static void AddColumnValue(DicomDataset dataset, DataRow row, DicomItem i) { //get the column name for the tag var name = DicomTypeTranslaterReader.GetColumnNameForTag(i.Tag, false); //if we don't have it in our table yet if (!row.Table.Columns.Contains(name)) { //add it with the correct hard Type var type = DicomTypeTranslater.GetNaturalTypeForVr(i.ValueRepresentation, i.Tag.DictionaryEntry.ValueMultiplicity); row.Table.Columns.Add(name, type.CSharpType); } //populate row value row[name] = DicomTypeTranslaterReader.GetCSharpValue(dataset, i); }