【发布时间】:2015-03-30 14:59:21
【问题描述】:
我正在编写一个 asp.net C# 网络应用程序;
我有一个名为“table1”的内存数据表,它有三列“country”、“productId”和“productQuantity”;
我想旋转该表以获得一个新表(假设'table2'),其中第一列'country'作为固定列以及列的动态编号和名称'product_1','@ 987654330@', ..., 'product_n' 根据'table1'中存在的产品总数;
第一列“country”必须包含国家名称;
动态生成的列 'product_1', 'product_2', ..., 'product_n' 必须包含已在指定国家/地区销售的每种特定产品的productQuantity
我正在使用 Linq 查询表达式来编写代码;问题是我不能硬编码名称和产品的值;我无法预测数据表中存在多少产品; 现在,我正在使用以下表达式测试结果:
var query = table1.AsEnumerable()
.GroupBy(c => c.country)
.Select(g => new
{
country = g.Key,
product_1 = g.Where(c => c.productId == "a30-m").Select(c => c.productQuantity).FirstOrDefault(),
product_2 = g.Where(c => c.productId == "q29-s").Select(c => c.productQuantity).FirstOrDefault(),
.
.
.
product_n = g.Where(c => c.productId == "g33-r").Select(c => c.productQuantity).FirstOrDefault()
});
我正在举例说明“table1”的外观以及“table2”的外观:
view example image of the two tables table1 and table2
谁能帮我找到使用 linq 树表达式或其他 linq 方法创建具有动态列的数据透视表的解决方案; 任何帮助将不胜感激。
【问题讨论】:
-
等待任何帮助...
标签: c# asp.net linq linq-to-dataset over-clause