2015-04-23 3 views
1

У меня есть следующее выражение LINQ, и мне нужно добавить два поля extrastring (newFieldWhat и newFieldBy) в объект Record в списке результатов. Значение String может быть как первым, так и последним, без разницы. Как я могу это достичь?Группа Linq по выбору

List<Record> groupedTable = (from t in recordTable 
        group t by new {t.groupBy1} 
        into grp 
         select new 
         Record{ 
          groupBy1 = grp.Key.groupBy1, 
          attribute1 = grp.Sum(t => t.attribute1), 
          newFieldWhat = ? 
          newFieldBy = ? 
         }).OrderBy(a => a.groupBy1).ToList(); 
+0

'grp.First()', 'grp.Last()' или вы имеете в виду что-то другое? –

+0

Вы спрашиваете, как добавить свойства в класс записи? ... –

+0

Вы не можете изменять свой класс 'Record' на лету. Чего вы пытаетесь достичь? –

ответ

3

Этот комментарий делает его более ясным:

newFieldWhat = grp.First(t => t.newFieldWhat) 

дает мне: "не может преобразовать 'строку' в 'BOOL' newFieldWhat является строка"

Я думаю, вы хотите:

newFieldWhat = grp.First().newFieldWhat 

или, если вы хотите, чтобы все группы:

newFieldWhat = String.Join(",", grp.Select(t => t.newFieldWhat)) 
+0

newFieldWhat = grp.First() .newFieldЧто было то, что мне нужно. спасибо – user2542809

+0

@ user2542809: если вы ожидаете, что только dulicates, то первое будет эффективным и правильным. Но, возможно, вы все равно хотите использовать второй. Преимущество состоит в том, что он отображает все разделенные запятой группы. Вы можете использовать 'grp.Select (t => t.newFieldWhat) .Distinct()', если вы хотите только увидеть, существуют ли другие. Если их нет, результат будет таким же, как с «First(). NewFieldWhat», поскольку запятая не добавляется. –

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