2013-01-11 6 views
0

У меня есть таблица данных с данными примера.Запрос Linq для объединения результатов ячейки?

enter image description here

Requirment, чтобы сделать эту таблицу данных, так что возвращает все строки, но для повторяющихся строк (последние два, например) требование, чтобы объединить там разные значения с запятой и возврата, сделав его одной записи.

Для примера:

Gold-Silver, Metllurgist 19 Ник Гордон. , , , ,

Пожалуйста, помогите мне.

БЛАГОДАРЯ

ответ

1

Как Профессия поля является единственным изменением поля, и вы хотите, комбинированное значение для этого поля, необходимо следующим
1. Grouping на основе Profession
2. Select записей
3. Используйте Aggregate для объединения Профессия

Кроме того, необходимо определить конкретный тип для представления (ProfessionRecord в коде ниже)

var results = dataTable.AsEnumerable() 
        .GroupBy(x=> x.Field<string>("Profession")) 
        .Select ( grouping => 
           new { 
            Key=grouping.Key, 
            CombinedProfession = grouping.Aggregate((a,b)=> a + " " + b) 
           }) 
        .Select (x=> new ProfessionRecord 
          { 
           Id = x.Key.Id, 
           Name = x.Key.Name, 
           Profesion = x.CombinedProfession, 
          }); 

VB.NET От tool

Dim results = dataTable.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("Profession")).[Select](Function(grouping) New With { _ 
    .Key = grouping.Key, _ 
    .CombinedProfession = grouping.Aggregate(Function(a, b) a + " " + b) _ 
}).[Select](Function(x) New ProfessionRecord() With { _ 
    .Id = x.Key.Id, _ 
    .Name = x.Key.Name, _ 
    .Profesion = x.CombinedProfession _ 
}) 

(я не уверен, насколько он оптимизирован, как VB.NET это не мой первый язык)

Вам нужно добавить ссылку на Data Row Extensions для метода Field<T>(string fieldname)

+0

Благодаря @Tilak строки не дублируются, поскольку столбец Профессии будет иметь разные значения даже для тех же строк. Я хочу сделать datatable, поскольку он возвращает все строки, а для строк дубликатов он их объединяет, а для столбца Profession это может сделать их запятыми, как я уже упоминал по запросу. Пожалуйста, направляйте – user576510

+0

ответ обновлен для не дублированного поля Профессия. – Tilak

+0

Прошу прощения, но, как я делаю в vb, не могли бы вы дать код в vb? Я пытаюсь преобразовать его с помощью конвертера, но он говорит об ошибке, которую я не могу понять. пожалуйста – user576510

Смежные вопросы