Сгруппируйте результат с помощью linq

У меня есть некоторые проблемы, и я не знаю, что делать, может кто-нибудь помочь мне, пожалуйста? У меня есть такая таблица:

ID   Name   Produkt    Comment   aa    bb
1    Mike   AA         YY        x
1    Mike   AA         YY              x

Я хочу сгруппировать с linq результат, как у Майка, но только в одной строке

1   Mike   AA          YY        x     x

Мой код:

var results = from t1 in table.AsEnumerable()
                      join tb2 in table2.AsEnumerable()
                      on t1.Field<string>("Name") equals tb2.Field<string>("Name") into prodGroup
                      from table4 in prodGroup.DefaultIfEmpty()

                      select new
                      {
                          ID = t1.Field<Int32?>("ID"),
                          Name = t1.Field<String>("Name"),
                          Produkt = t1.Field<String>("Produkt"),
                          Attribute = t1.Field<String>("Attribute"),
                          Comment = table4 != null ? table4.Field<String>("Comment") : null,

                      };
foreach (var r in results)
{
    var productIndex = result.Columns.IndexOf(r.Attribute);
    var vals = new List<object>() { r.ID, r.Name, r.Produkt, r.Comment };
    for (int i = 4; i < result.Columns.Count; i++)
    {
        if (i == productIndex)
        {
            vals.Add(true);

        }
        else
        {
            vals.Add(false);
        }
    }
    result.LoadDataRow(vals.ToArray(), true);
}

person Uni Le    schedule 01.10.2012    source источник
comment
Почему вы это делаете, вы используете метод Merge?   -  person cuongle    schedule 02.10.2012


Ответы (1)


Попробуй это:

var result = from t1 in table.AsEnumerable()
                group t1 by t1.Name into t1group
                select new
                {
                    Name = t1group.FirstOrDefault().Name
                    ,ID = t1group.FirstOrDefault().ID
                    ,Product = t1group.FirstOrDefault().Product
                    ,Comment = t1group.FirstOrDefault().Comment
                    ,aa = (t1group.Select(x => x.aa??"" + x.bb??"")).Aggregate((a, b) => (a + ", " + b))
                };
person Gábor Plesz    schedule 02.10.2012