1

私はこのようなDataTableを持っています

ボブ・ヴェイル、助けてくれてありがとう

(Select(X,i) はあなたのlinqで何を意味しますが、テーブルで間違いを犯したので、これがあります

   No |  Size   | Type   |   FB   |   FP
----------------------------------------
 100  |   2     | typeA  |   FB1  |    A1        
 101  |   3     | typeB  |   FB1  |    A1     
 101  |   4     | typec  |   FB1  |    A1         
 103  |   4     | typeC  |   FB2  |    A2         
 103  |   5     | typeD  |   FB2  |    A2         
 103  |   6     | typeE  |   FB2  |    A2

みたいなものが欲しい

  No |  Size   | Type   |   FB   |   FP    
    ---------------------------------    
100  |  2     | typeA  |   FB1  |    A1    
101  |  3     | typeB  |   FB1  |    A1     
     |  4     | typec  |        |        
103  |  4     | typeC  |   FB2  |    A2         
     |   5    | typeD  |        |        
     |   6    | typeE  |        |   

どうすれば作れますか?グループ化できます

var result = from row in cableDataTable.AsEnumerable()
             group row by new 
             {
                 FB = row.Field<string>("FB"),
                 FP = row.Field<string>("FP"), 
                 Size = row.Field<int>("Size"),
                 Type = row.Field<int>("Type"), 
                 no= row.Field<int>("no"),
             } into g
             select new
             {
                 FB = g.Key.FB,
                 FP = g.Key.FP,
                 Size = g.Key.Size,
                 Type = g.Key.Type 

no= g.Key.no };

しかし、それは結果を与えることができませんでした

ご清聴ありがとうございました

4

2 に答える 2

3

これはどう:

// First declare a conversion from the DataTable to an anon type
var rows = cableDataTable.AsEnumerable()
                         .Select(x => new { 
                                           Size = x.Field<int>("Size"),
                                           Type= x.Field<string>("Type"),
                                           FB = x.Field<string>("FB"),
                                           FP = x.Field<string>("FP")
                                          });

// Now use group by, ordering and select many to select the rows
var result =  rows.GroupBy (row => new {row.FB, row.FP} )
                  .OrderBy (g => g.Key.FB)
                  .ThenBy(g => g.Key.FP)
                  .SelectMany(g => g.OrderBy(row => row.Size)
                        .Select((x,i) =>
                                               new { 
                                                 Size = x.Size,
                                                 Type = x.Type,
                                                 FB = (i==0) ? x.FB : null,
                                                 FP= (i==0) ? x.FP : null 
                                                }));
于 2013-09-18T10:15:30.543 に答える
0

var result = cableDataTable.AsEnumerable().GroupBy(g => new { g.FB, g.FP}).Select(x => x); としてlinqクエリを使用できます。

于 2013-09-18T10:19:26.457 に答える