如何使用以下格式使用LINQ to Entities格式化数据?

时间:2012-04-01 03:36:52

标签: asp.net-mvc c#-4.0 linq-to-entities

使用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

1 个答案:

答案 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();