List <T> GetKeyValuePairs <T>(IDataHolder obj, Func <TableDefinition, T> listCreator) where T : KeyValueListBase { var dataHolderDef = m_mapping.GetDataHolderDefinition(obj.GetType()); var lists = new List <T>(m_mapping.TableDefinitions.Length); for (var i = 0; i < m_mapping.TableDefinitions.Length; i++) { var table = m_mapping.TableDefinitions[i]; for (var j = 0; j < table.ColumnDefinitions.Length; j++) { var col = table.ColumnDefinitions[j]; for (var k = 0; k < col.FieldList.Count; k++) { var field = col.FieldList[k]; var def = field.DataHolderDefinition; if (def == dataHolderDef) { var list = lists.FirstOrDefault(l => l.TableName == table.Name); if (list == null) { lists.Add(list = listCreator(table)); } var value = field.Get(obj); list.AddPair(col.ColumnName, value.ToString()); } } } } return(lists); }
private List <T> GetKeyValuePairs <T>(IDataHolder obj, Func <TableDefinition, T> listCreator) where T : KeyValueListBase { DataHolderDefinition holderDefinition = m_mapping.GetDataHolderDefinition(obj.GetType()); List <T> source = new List <T>(m_mapping.TableDefinitions.Length); for (int index1 = 0; index1 < m_mapping.TableDefinitions.Length; ++index1) { TableDefinition table = m_mapping.TableDefinitions[index1]; for (int index2 = 0; index2 < table.ColumnDefinitions.Length; ++index2) { SimpleDataColumn columnDefinition = table.ColumnDefinitions[index2]; for (int index3 = 0; index3 < columnDefinition.FieldList.Count; ++index3) { IFlatDataFieldAccessor field = columnDefinition.FieldList[index3]; if (field.DataHolderDefinition == holderDefinition) { T obj1 = source.FirstOrDefault(l => l.TableName == table.Name); if (obj1 == null) { source.Add(obj1 = listCreator(table)); } object obj2 = field.Get(obj); obj1.AddPair(columnDefinition.ColumnName, obj2.ToString()); } } } } return(source); }