using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DataBindingTest3
{
    public partial class Form1 : Form
    {
        DataSet dataSet;
        DataTable dataTable;

        public Form1()
        {
            InitializeComponent();
            Init();
            InitMenu();
            DoWork();
        }

        private void DoWork()
        {
            //値段が高い順にソートする
            DataTable dt = GetSortedDataTable(dataSet.Tables["メニュー"], "値段 DESC");
        }

        static DataTable GetSortedDataTable(DataTable dt, string sort)
        {
            DataTable table = dt.Clone();           //スキーマと制約をクローンしている
            DataRow[] row = dt.Select(null, sort);

            foreach (var item in row)
            {
                DataRow addRow = table.NewRow();
                addRow.ItemArray = item.ItemArray;
                table.Rows.Add(addRow);
            }
            return table;
        }

        private void InitMenu()
        {
            DataRow dr = dataSet.Tables["メニュー"].NewRow();
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "味噌ラーメン", 700 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "醤油ラーメン", 650 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "チャーハン", 550 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "麻婆豆腐", 630 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "ニラ炒め", 750 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "天津飯", 600 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "焼肉定食", 850 });
            dataSet.Tables["メニュー"].Rows.Add(new object[] { "ラーメン定食", 800 });
        }

        private void Init()
        {
            dataTable = new DataTable("メニュー");

            dataTable.Columns.Add("名前", typeof(string));
            dataTable.Columns.Add("値段", typeof(int));
            dataTable.Columns.Add("価格(税込)", typeof(int), "値段 + 値段*0.05");

            dataSet = new DataSet("中華飯店");
            dataSet.Tables.Add(dataTable);
        }
    }
}
最終更新:2012年09月04日 23:42