2

これらは私のデータテーブルの内容ですdtAllData

 column_1  column_2  column_3    
 --------  --------  --------  
 sec_1       Test1        2
 sec_1       Result1      5
 sec_1       Unit1        2 
 sec_2       Test2        2           
 sec_2       Result2      2
 sec_2       Unit2        5
 sec_3       Test3        2 
 sec_3       Result3      2     
 sec_3       Unit3        2     

列の内容に基づいて、複数のデータテーブルに分割する必要がありますcolumn_1

したがって、この場合、3つのテーブルを取得することになっています(1つはすべての行を持ちsec_1、もう1つはを持ち、sec_2もう1つはを持ちますsec_3)。

私はこれを試しました:

var dtArray = dtAllData.AsEnumerable() 
                            .GroupBy(row => new
                            {
                                column_1 = (string)row["column_1"]
                            });
DataTable[] array = new DataTable[dtArray.Count()];

どうすればテーブルを取得できarrayますdtArrayか?

4

4 に答える 4

4

メソッドを使用CopyToDataTable()してデータを新しい DataTable に取得します。

var Result =  from x in dtAllData.AsEnumerable()
              where x.Field<string>("column_1") == "sec_1"
              select x;
DataTable t1 = Result.CopyToDataTable();

別の方法はLoadDataRow()メソッドを使用することです。ここに例があります

于 2013-02-27T13:39:12.113 に答える
0

column_1 の正確な名前がわかっている場合は、.Select .Select("column_1 = sec_1")などを使用するか、DataViewを使用できます。

于 2013-02-27T13:58:42.903 に答える
0

のソリューションを変更Kafすると、次のように望んでいたことが達成されました。

var uniqueList = dtAllData.AsEnumerable().Select(x=> x.Field<string>("column_1")).Distinct();
List<string> myList = new List<string>();
myList =uniqueList.ToList();

DataTable[] array = new DataTable[myList.Count()];
int index = 0;
foreach (string item in myList)
{
    var Result =  from x in dtAllData.AsEnumerable()
                  where x.Field<string>("column_1") == item
                  select x;
    DataTable table = Result.CopyToDataTable();
    array[index] = table;
    index++;
}

したがって、array異なる値を持つ3つのデータテーブルが含まれていますcolumn_1

于 2013-02-27T14:09:07.550 に答える