如何使用LINQ显示数据

时间:2010-07-09 12:13:18

标签: linq-to-objects

我有一个像:

这样的数据集
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 个答案:

答案 0 :(得分:1)

这是我的示例代码。手动创建DataTable列,如dt.Columns.Add(“Branch Code”,typeof(string));

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);
        }

答案 1 :(得分:1)

我假设你的意思是一个真正的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() )
                 } );

如果它确实是您拥有的对象列表,那么您可以将其更改为按特定属性(而不是列号)进行分组,并且可能省略内部select子句中的ToString()(因为它是已经强类型的字符串属性。