使用LINQ,我可以将表格中的数据转换成下面显示的格式吗? LINQ可以执行这种格式化还是应该循环结果格式化?
格式我正在尝试将数据输入:
dau gmu population year
------ ---------- ---------- -------
1 2, 201 1680 2010
2 3, 4, 5, 14 14570 2010
DATA IN TABLE:
id dau gmu population year species
----------- ----------- ----------- ------------------- ---- -------
1 1 2 1680 2010 E
2 1 201 1680 2010 E
3 2 3 14570 2010 E
4 2 4 14570 2010 E
5 2 5 14570 2010 E
6 2 14 14570 2010 E
答案 0 :(得分:2)
实际格式由您决定,但假设您有一组名为list
的项目,您可以这样做:
var result = from x in list
group x by new {x.dau, x.population, x.year} into p
select new
{
dau = p.Key.dau,
population = p.Key.population,
year = p.Key.year,
gmu = p.Select (x => x.gmu)
};
如果您实际处理的是L2E,则可能必须将其拉入内存列表才能执行此操作。
编辑:刚刚尝试使用L2E,它似乎写得很好。而不是查询中的list
,而是更像context.TableName
。
这是完整的代码。输出非常草率,但现在已经很晚了,我认为OP并不担心格式化这么多:
var result = from x in list.Stacko1
group x by new { x.dau, x.population, x.year } into p
select new
{
dau = p.Key.dau,
population = p.Key.population,
year = p.Key.year,
gmu = p.Select(x => x.gmu)
};
result.ToList().ForEach(item=>
{
System.Console.Write("{0}\t\t", item.dau);
item.gmu.ToList().ForEach(gmuElement=>
{
System.Console.Write("{0},", gmuElement);
});
System.Console.Write("\t\t");
System.Console.Write("{0}\t\t", item.population);
System.Console.WriteLine("{0}", item.year);
});
System.Console.ReadKey();