アイビー先生の力も借りてみましたが、とっかかりの時点で使うInferColumnsメソッドがそもそもまあCSVが基本でSQLiteとかのデータ読込には対応してないので、前回リストに入れたものをデータビューにとかは出来ない。って事は、まあね、ソースをSQLiteからCSVとして抜き出して、それを元にすれば...ってこれするなら単純にモデルビルダーで行けるじゃんorz なのでautoMLについて調べる気力が失せました😨
なので、ちと方向転換して何をCSVとして吐き出すかがキーになりそうで、それを検討しながらまたCsvHelperのお世話になるんですが、既に忘れてます😖 出力用のクラスを
internal class STSrc
{
public string JouCD { get; set; }
public byte TrackCD { get; set; }
public short Kyori { get; set; }
public byte Tenko { get; set; }
public byte Baba { get; set; }
public long Chichi { get; set; }
public float KishuSyoritsu { get; set; }
public float ChokyosiSyoritsu { get; set; }
public float Souha { get; set; }
public STSrc
(
string JouCD,
byte TrackCD,
short Kyori,
byte Tenko,
byte Baba,
long Chichi,
float KishuSyoritsu,
float ChokyosiSyoritsu,
float Souha
)
{
this.JouCD = JouCD;
this.TrackCD = TrackCD;
this.Kyori = Kyori;
this.Tenko = Tenko;
this.Baba = Baba;
this.Chichi = Chichi;
this.KishuSyoritsu = KishuSyoritsu;
this.ChokyosiSyoritsu = ChokyosiSyoritsu;
this.Souha = Souha;
}
}
として、このマッピング用に
internal class STTable : ClassMap<STSrc>
{
private STTable()
{
Map(c => c.JouCD).Index(0).Name("競馬場コード");
Map(c => c.TrackCD).Index(1).Name("トラックコード");
Map(c => c.Kyori).Index(2).Name("距離");
Map(c => c.Tenko).Index(3).Name("天候コード");
Map(c => c.Baba).Index(4).Name("馬場状態コード");
Map(c => c.Chichi).Index(5).Name("繁殖登録番号_父");
Map(c => c.KishuSyoritsu).Index(6).Name("騎手勝率");
Map(c => c.ChokyosiSyoritsu).Index(7).Name("調教師勝率");
Map(c => c.Souha).Index(8).Name("走破タイム");
}
}
と準備して、
List<STSrc> st = new List<STSrc>();
をリーダーループ前に宣言して、
kaisaibi = rs.GetDateTime("KAISAIBI");
jouCD = rs.GetString("JOUCD");
rno = rs.GetByte("RNO");
tracdCD = rs.GetByte("TRACKCD");
ketto = rs.GetInt32("KETTO");
syoritsu = GetSyoritsu(cmdCK, kaisaibi, jouCD, rno, ketto, tracdCD);
// データクラス
STSrc shinbaTime = new STSrc(
jouCD,
tracdCD,
rs.GetInt16("KYORI"),
rs.GetByte("TENKO"),
rs.GetByte("BABA"),
GetChichi(cmdU, ketto),
syoritsu.Kishu,
syoritsu.Chokyosi,
rs.GetFloat("SOUHA")
);
st.Add(shinbaTime);
と回してリスト作ったら、
var path = @"ShinbaTime.csv";
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = true
};
using (StreamWriter sw = new StreamWriter(path, false))
using (var csv = new CsvWriter(sw, config))
{
csv.Context.RegisterClassMap<STTable>();
csv.WriteRecords(st);
}
とすればCSV出力は完了する。
CSVが出来たのでまあ普通にモデルビルダーが動かせるので試してみた。
0 件のコメント:
コメントを投稿