一个List<BillTemplateAnalyseInfo>名为:BillTemplateAnalyseInfos
BillTemplateAnalyseInfos包含一个名为BillTemplateItemInfos的list<BillTemplateItemInfo>
BillTemplateItemInfo的结构如下:
TestItemID 
ItemName 
AnalyseResult
 DataUnitName 
PointerResult 
AnalyseUserNameBillTemplateItemInfos里的内容为:
TestItemID   ItemName  AnalyseResult  DataUnitName  PointerResult  AnalyseUserName
1             c1        0.1            cm            合格           wang
1             c1        0.2            cm            不合格           wang
1             c1        0.3            cm             合格           wang
....
2             b1        0.1            mg            实测            li
2             b2        0.2            mg             实测           li
..............现在想把BillTemplateItemInfos 里的数据转换成以下格式,
1             c1        0.1    0.2 0.3..      cm            合格           wang
2             b1        0.1     0.2..         mg            实测            li转换成这种格式之后我同时数据类型还是想返回list<BillTemplateItemInfo>。
问题:转换格式这怎么写?同时又怎样返回List<BillTemplateItemInfo>呢?
实在没办法的话就返回一个DataTable.
多谢了。麻烦按照我上面这些信息写一个demo吧。

解决方案 »

  1.   

    1 c1 0.2 cm 不合格 wang
    ------------------------这个不管?
      

  2.   


    void Main()
    {
    var list=new List<temp>{
    new temp{ id=1,name="c1", result=0.1},
    new temp{ id=1,name="c1", result=0.2},
    new temp{ id=2,name="c2", result=0.1},
    new temp{ id=2,name="c2", result=0.2},
    new temp{ id=2,name="c2", result=0.3}
    };
    var query=from l in list
      group l by new{l.id,l.name} into m
      select new
      {
    id=m.Key.id,
    name=m.Key.name, 
    c=m.Count(),
    result=m.Select(n=>n.result.ToString())
      };
     //ds用于存放最终结果集合  
     DataSet ds=new DataSet();

     foreach(var q in query)
     {
       //dt用于存储单个结果集合
        DataTable dt=new  DataTable();
       dt.Columns.Add("id");
       dt.Columns.Add("name");
       for(int i=0;i<q.c;i++)
       {
         dt.Columns.Add("result"+(i+1));
       }
       
        var row=new string[]{q.id.ToString(),q.name};
        row=row.Concat(q.result).ToArray();
       dt.Rows.Add(row);
       ds.Tables.Add(dt);
     }
    Console.WriteLine(ds);
    }
    class temp
    {
     public int id{get;set;}
     public string name{get;set;}
     public double result{get;set;}
    }