私はこのようなデータテーブルを持っています
X,Y,Z
0,0,A
0,2,B
0,0,C
1,0,A
1,0,C
2,2,A
2,2,B
2,0,C
3,2,B
3,1,C
4,3,A
4,0,B
4,1,C
5,3,A
5,2,B
5,0,C
そして私はそれを次のようなものに変換したいと思います:
X,A,B,C
0,0,2,0
1,0, ,0
2,2,2,0
3, ,2,1
4,3,0,1
5,3,2,0
データセットとlinqを試してみましたが、運が悪かったわけではありません。
linqの私のコード:
Dim q = (From c In dt _
Select c("Z") Distinct) 'I found out which categories I have in Z column (my example :A,B,C)
Dim ldt(q.Count) As DataTable
For i = 0 To q.Count - 1
Dim sfil As String = q(i).ToString
Dim r = (From c In dt _
Select c Where c("Z") = sfil)
ldt(i) = r.CopyToDataTable
Next
これで、3つのテーブル(Aの値を持つldt(0)、Bの値を持つldt(1)、Cの値を持つldt(2))があり、leftJoinのようなことを考えていましたが、試したものはすべて失敗します。解決策やより良いアイデアはありますか?
ありがとう
したがって、新しい例は次のようになります。次のテーブルがあります。
id,Price,Item
0,0,Laptop
0,2,Tablet
0,0,Cellphone
1,0,Laptop
1,0,Tablet
2,2,Laptop
2,2,Cellphone
2,0,Tablet
3,2,Cellphone
3,1,Tablet
4,3,Laptop
4,0,Cellphone
4,1,Tablet
5,3,Laptop
5,2,Cellphone
5,0,Tablet
そして私はそれをこれに変換したいと思います:
X,Laptop,Tablet,Cellphone
0,0,2,0
1,0, ,0
2,2,2,0
3, ,2,1
4,3,0,1
5,3,2,0
ラップトップ、タブレット、携帯電話の各列の値は、最初の表のY値です。
私はそれが今より理にかなっていることを願っています。