У меня есть IEnumerable
из анонимного типа в результате операции соединения LINQ.Вот некоторые из значений списка:
{ CellId = 0, CellIndex = "1", CellDataType = "String", CellValue = "Id", RowNumber = 0 }
{ CellId = 1, CellIndex = "2", CellDataType = "String", CellValue = "first_name", RowNumber = 0 }
{ CellId = 2, CellIndex = "3", CellDataType = "String", CellValue = "age", RowNumber = 0 }
{ CellId = 3, CellIndex = "4", CellDataType = "String", CellValue = "child_name", RowNumber = 0 }
{ CellId = 4, CellIndex = "5", CellDataType = "String", CellValue = "child_age", RowNumber = 0 }
{ CellId = 5, CellIndex = "1", CellDataType = "Number", CellValue = "1", RowNumber = 1 }
{ CellId = 6, CellIndex = "2", CellDataType = "String", CellValue = "john", RowNumber = 1 }
.
.
.
(данные поступают из таблицы Excel). Вы можете видеть, что объекты с rowNumber = 0 имеют имена столбцов таблицы.
из таблицы вы можете заметить, что у Джона (id = 1) 3 ребенка, поэтому я бы хотел сгруппировать по id и получить что-то вроде:
Id = 1
first_name = "john", age = 30, child_name = "Andy", child_age = 4
first_name = "john", age = 30, child_name = "Anna", child_age = 6
first_name = "john", age = 30, child_name = "Lily", child_age = 8
Id = 2
first_name = "Emily", age = 32, child_name = "Harry", child_age = 3
first_name = "Emily", age = 32, child_name = "David", child_age = 3
Id = 3
first_name = "Peter", age = 40, child_name = "Carol", child_age = 2
Я предполагаю, что Linq GroupBy может сделать это.Проблема:
Элементы списка имеют анонимный тип , а его свойства являются общими объектами.CellId, CellIndex, RowNumber всегда будут целыми числами, поэтому я мог бы использовать приведение, но CellValue не определено, это может быть строка, целое число и т. Д.
Я могу получить IEnumerable of Anonymous Type <int, int, string, string, int>
.Я в основном конвертирую CellId в int, CellIndex в int, CellValue в строку, CellDataType в строку и RowNumber в int.Но я все еще не уверен, как я могу сделать группировку.
Как я могу сгруппировать их?
Чтобы сравнить, что Id равны, мне нужно посмотреть CellIndex = 1 (что соответствуетимя столбца Id ), а затем используйте свойство CellValue (того же элемента анонимного типа), чтобы увидеть, равно ли оно.
В основном мне нужно сгруппировать по CellValue, но только для тех, которыеесть CellIndex = 1.
Есть предложения?