我有一个像:
这样的数据集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#中
答案 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()
(因为它是已经强类型的字符串属性。