Как отобразить данные с помощью LINQ - PullRequest
1 голос
/ 09 июля 2010

У меня есть набор данных вроде:

Attic           Indoor             Indoor
Cable           Indoor             Indoor
Double          Indoor             Indoor
Fireplace       Indoor             Indoor
Basketball      Outdoor            Outdoor
Freshwater      Leisure Activities Leisure Activities
Fishing         Leisure Activities Leisure Activities

и используя linq я хочу показать данные как

Indoor              | Attic,Cable,Double,FirePlace
Outdoor             | Basketball
Leisure Activities  | Freshwater,fishing

в C #

Ответы [ 2 ]

1 голос
/ 09 июля 2010

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

using System.Data;
using System.Linq;

var display = ds.AsEnumerable()
                .GroupBy( r => r[1], r => r[0] )
                .Select( g => new
                 {
                     RecreationType = g.Key,
                     Examples = string.Join( ",", g.Select( e => e.ToString() )
                                                   .ToArray() )
                 } );

Если это действительно список объектов, который у вас есть, то вы можете изменить его на группирование по определенному свойству (вместо номера столбца) и, возможно, пропустить ToString() во внутреннемпредложение select (поскольку это уже строго типизированное строковое свойство).

1 голос
/ 09 июля 2010

это мой пример кода. Создайте столбцы DataTable вручную, например, dt.Columns.Add («Код ветви», typeof (строка));

DataTable dt = CreateDataTableForHqSql();

        List<MALSATIS_VIEW> value = (from s in hqsqlDataContext.MALSATIS_VIEWs
                                     where
                                     s.TRANSACTION_DATE >= startDate && s.TRANSACTION_DATE <= endDate //starting
                                     select s).ToList();

        foreach (MALSATIS_VIEW item in value)
        {
            object[] row = new object[]
            {
            item.BRANCH_CODE,
            item.TRANSACTION_DATE,
            item.CODE,
            item.EXPLAIN,
            item.EXPLAIN_CONT,
            item.BIRIM,
            item.QUANTITY,
            item.TOT_CIRO,
            item.TOT_VAT
            };
            dt.Rows.Add(row);
        }
...