<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>icocTech &#187; C#</title>
	<atom:link href="http://icoctech.icoc.co.jp/blog/?feed=rss2&#038;tag=c" rel="self" type="application/rss+xml" />
	<link>http://icoctech.icoc.co.jp/blog</link>
	<description>株式会社アイコック　システム部の技術関連ブログ</description>
	<lastBuildDate>Mon, 01 Aug 2016 03:45:32 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>DataTable間の操作について</title>
		<link>http://icoctech.icoc.co.jp/blog/?p=587</link>
		<comments>http://icoctech.icoc.co.jp/blog/?p=587#comments</comments>
		<pubDate>Wed, 12 Nov 2014 08:31:34 +0000</pubDate>
		<dc:creator><![CDATA[ohshima]]></dc:creator>
				<category><![CDATA[プログラム]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://icoctech.icoc.co.jp/blog/?p=587</guid>
		<description><![CDATA[今回はC#で開発した際の話です。 あるDataTableから必要なフィールドのみを選択し、 新規のDataTableを作る必要が有りました。 そこで、今回は以下の様に対応しました。 元となるDataTable：table [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>今回はC#で開発した際の話です。</p>
<p>あるDataTableから必要なフィールドのみを選択し、<br />
新規のDataTableを作る必要が有りました。</p>
<p>そこで、今回は以下の様に対応しました。</p>
<p>元となるDataTable：table1<br />
必要なフィールドのみを持つ新規DataTable：table2<br />
必要なフィールドのインデックス：0,1,3,4,7</p>
<pre><code>
// 必要なフィールドの列名を配列化します。
string[] requiredColumns = {dt.Columns[0].ToString(),
                            dt.Columns[1].ToString(),
                            dt.Columns[3].ToString(),
                            dt.Columns[4].ToString(),
                            dt.Columns[5].ToString(),
                           };

// 元のテーブルから必要なフィールドのみを抽出して、テーブルを新規作成します。
System.Data.DataTable table2 = table1.DefaultView.ToTable(true, requiredColumns);
</code>
</pre>
<p>ToTableの最初の引数は、重複する行を含むかどうかをBool値で指定します。<br />
Trueなら重複しない行のみ格納され、Falseでは重複する行も格納されます。<br />
二つ目の引数は、抽出する列名を指定します。<br />
ここでは、事前に配列化しておいた変数をセットしました。</p>
<p>場合によっては、新規作成したテーブルの構造と値をそのまま別のテーブルで使用したい場合には、<br />
以下の様に行います。</p>
<pre><code>
// table2の構造と値をtable3へコピーします。
System.Data.DataTable table3 = table2.Copy();

//table2の構造のみをtable4へコピーします。
System.Data.DataTable table4 = table2.Clone();
</code>
</pre>
<p>Cloneは構造のみをコピーするので、<br />
table2と同じ構造を持ち、値は異なる、といったデータの保持が可能になります。</p>
<p>また、元のテーブルと同じ構造を持ち、元のテーブル特定行のみを移したい場合、<br />
ImportRow()メソッドを使用します。</p>
<pre><code>
System.Data.DataTable table4 = table2.Clone();
table4.ImportRow(table2.Rows[0]);
</code>
</pre>
<p>とすることで、table2の1行目のデータをtable4へインポートできます。</p>
]]></content:encoded>
			<wfw:commentRss>http://icoctech.icoc.co.jp/blog/?feed=rss2&#038;p=587</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
