Skip to content

Instantly share code, notes, and snippets.

@noqisofon
Created July 6, 2023 14:19
Show Gist options
  • Save noqisofon/2b63e1c01ade4a69177bae28a7581886 to your computer and use it in GitHub Desktop.
Save noqisofon/2b63e1c01ade4a69177bae28a7581886 to your computer and use it in GitHub Desktop.
( ノ╹◡◡╹)ノ DataTable~~~

DataColumnを今の書き方で書くならこんな感じ:

void make_table() {
    // DataTable インスタンスを作成します。
    var table = new DataTable("商品");

    // 列定義をタプルの配列で作成します。
    var columnDefinitions = new (string name, Type dataType, bool allowNull)[] {
        (name: "id"   , dataType: typeof(long)   , allowNull: false),
        (name: "name" , dataType: typeof(string) , allowNull: false),
        (name: "price", dataType: typeof(decimal), allowNull: false),
    };
    // 列を追加します。
    foreach ( var columnDefinition in columnDefinitions ) {
        var column = new DataColumn {
            Caption = columnDefinition.name,
            ColumnName = columnDefinition.name,
            DataType = columnDefinition.dataType,
            AllowDBNull = columnDefinition.allowNull
        };

        table.Columns.Add( column );
    }

    // 行を追加します。
    long id = 0;
    foreach ( var (productName, price) in new (string productName, decimal price)[] {
            ( productName: "バナナ", price: 200m ),
            ( productName: ""    , price: 130m ),
            ( productName: ""    , price: 160m )
    } ) {
        var row = table.NewRow();

        row["id"] = ++ id;
        row["name"] = name;
        row["price"] = price;

        table.Rows.Add( row );
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment