<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>LINQ</title><link>http://blogs.wankuma.com/trapemiya/category/1536.aspx</link><description>LINQ</description><managingEditor>trapemiya &lt;miya.hideki@nifty.com&gt;</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>LINQのTipsに関する記事：LINQ Deep Dive: Part I</title><link>http://blogs.wankuma.com/trapemiya/archive/2009/04/07/170891.aspx</link><pubDate>Tue, 07 Apr 2009 10:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2009/04/07/170891.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/170891.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2009/04/07/170891.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/170891.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/170891.aspx</trackback:ping><description>&lt;P&gt;LINQのTipsの記事をご紹介します。&lt;/P&gt;
&lt;P&gt;LINQ Deep Dive: Part I&lt;BR&gt;Tips for Delving in to LINQ&lt;BR&gt;&lt;A href="http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp"&gt;http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp&lt;/A&gt;&lt;A href="http://www.popjisyo.com/WebHint/AddHint.aspx?d=1&amp;amp;u=http%3A//www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;私はLINQ To Objectsしか主に使いませんので、Tips SixとTips Sevenを読みました。Tips SixはLINQの書き方によってパフォーマンスに差が出るということ、Tips SevenはLINQの動作をよく知っていないと見つけにくいバグになるというものでした。Tips SixはSQLの書き方にも似たようなことがあるのでなるほどと思いましたし、Tips Sevenは以前に似たようなことを経験済みなのでそうだよね～と思いました。&lt;BR&gt;いずれにしても良い勉強になりました。Part Ⅱが楽しみです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/170891.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>サポート技術情報のRSSって新着サポート技術情報だけになっちゃったんだね？</title><link>http://blogs.wankuma.com/trapemiya/archive/2008/07/29/150792.aspx</link><pubDate>Tue, 29 Jul 2008 12:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2008/07/29/150792.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/150792.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2008/07/29/150792.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/150792.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/150792.aspx</trackback:ping><description>&lt;P&gt;久しぶりにサポート技術情報のRSS一覧を見に行ったら見つからない。あれ？どこだっけな？と探すこと小一時間。その間に気になる記事とかつまみ食いしてたこともありますが・・・。&lt;BR&gt;あまりにも見つからないので検索対象を広げたところ、Jittaさんのブログ発見。&lt;/P&gt;
&lt;P&gt;マイクロソフト サポート情報の RSS フィード &lt;BR&gt;&lt;A href="http://blogs.wankuma.com/jitta/archive/2008/07/17/149421.aspx"&gt;http://blogs.wankuma.com/jitta/archive/2008/07/17/149421.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;あれ～、無くなっちゃったのね。なんでだろー。&lt;BR&gt;とりあえずJittaさんのおかげで解決。多謝。&lt;BR&gt;たぶんこのJittaさんの記事、一度はタイトルだけは見てるはずなんだけど、さくっと通り過ぎてたなぁ。&lt;BR&gt;それにしても直近でナイスな記事でした。この記事が無かったらお昼ご飯が遅れてたもの。&lt;/P&gt;
&lt;P&gt;というわけで現在正式に表に出ているのは、ＭＳＤＮホームのトップページにあるサポート技術情報のRSSだけかな？これはどうも新着サポート技術情報のRSSのようです。&lt;/P&gt;
&lt;P&gt;じゃっ、お昼ごはんということで。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/150792.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>【LINQ】 データテーブルからある条件の値のみを集計したい。</title><link>http://blogs.wankuma.com/trapemiya/archive/2008/03/26/129758.aspx</link><pubDate>Wed, 26 Mar 2008 11:34:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2008/03/26/129758.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/129758.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2008/03/26/129758.aspx#Feedback</comments><slash:comments>928</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/129758.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/129758.aspx</trackback:ping><description>&lt;P&gt;int id = 2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //抽出条件&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;１．標準クエリ演算子のパターン&lt;/P&gt;
&lt;P&gt;int total = hogeDataSet.HogeDataTable.AsEnumerable()&lt;BR&gt;　　　　　　　　.Where( r =&amp;gt; r.Field&amp;lt;int&amp;gt;(hogeDataSet.HogeDataTable.IDColumn == id) )&lt;BR&gt;　　　　　　　　.Sum( s =&amp;gt; s.Field&amp;lt;int&amp;gt;(hogeDataSet.HogeDataTable.KingakuColumn) );&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;２．クエリ式のパターン&lt;/P&gt;
&lt;P&gt;var drk = from dr in hogeDataSet.HogeDataTable.AsEnumerable()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where dr.ID == id&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kin = dr.Field&amp;lt;int&amp;gt;(hogeDataSet.HogeDataTable.KingakuColumn),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id = dr.Field&amp;lt;int&amp;gt;(hogeDataSet.HogeDataTable.IDColumn)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } into s&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group s.kin by s.id into grp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select grp.Sum(_ =&amp;gt; _);&lt;/P&gt;
&lt;P&gt;int total = drk.FirstOrDefault&amp;lt;int&amp;gt;()&lt;/P&gt;
&lt;P&gt;１の標準クエリ演算子を使う方は簡単なんですが、２のクエリ式を使うパターンで悩んだ。&lt;BR&gt;selectもgroupもintoを使わないとそこで終ってしまうので、SQL文のようにselectとgroupを一度に書くことはできないんじゃないかと思う。&lt;BR&gt;よって、SQL文に比べるとかなりやぼったくなるけど、しょうがないのかな・・・&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/129758.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>LINQ To Objectにおけるselectは結果セットを取得しているのではない。</title><link>http://blogs.wankuma.com/trapemiya/archive/2008/03/06/126569.aspx</link><pubDate>Thu, 06 Mar 2008 15:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2008/03/06/126569.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/126569.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2008/03/06/126569.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/126569.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/126569.aspx</trackback:ping><description>&lt;P&gt;例えば一見するとうまく動きそうなコードがある。DataGridViewから複数行を選択して削除するコードである。&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; c = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; r &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; dataGridView1.Rows &lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; r.Selected &lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; r;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;BR&gt;DataRow&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; dr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;BR&gt;foreach&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; dgvr &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; c)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;dr = ((&lt;SPAN style="COLOR: #2b91af"&gt;DataRowView&lt;/SPAN&gt;)dgvr.DataBoundItem).Row;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;dr.Delete();&lt;SPAN style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: green"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=3&gt;しかし、上のコードがうまく動かない。cにはDataGridViewRowのコレクションが入っているように思うかもしれないが、そうではないからである。実は、&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;foreach&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; dgvr &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; c)&lt;BR&gt;&lt;FONT size=3&gt;を実行する度に&lt;BR&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; c = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; r &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; dataGridView1.Rows &lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; r.Selected &lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; r;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;に制御が戻り、そこからDataGridViewRowが取得されているからである。return yieldのような動作をしているというと理解しやすいかもしれない。&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;したがって、コレクションをなめている時にそのコレクションの中身が変わってしまうと、当然、うまく動かなくなってしまう。&lt;BR&gt;cにはDataGridViewRowのコレクションが入っており、それをなめながらDataRowを削除しているのだからうまくはずだと思ってしまうのだが、実際にはDataGridViewRowのコレクションが毎回作成し直されてしまうことに注意しなければならない。&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;したがって、上記は以下のようにDataGridViewRowのコレクションを一度保存しておくとうまくいく。&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt; c = &lt;SPAN style="COLOR: blue"&gt;from&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; r &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; dataGridView1.Rows &lt;SPAN style="COLOR: blue"&gt;where&lt;/SPAN&gt; r.Selected &lt;SPAN style="COLOR: blue"&gt;select&lt;/SPAN&gt; r;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;BR&gt;List&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt;&amp;gt; list = c.ToList&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;BR&gt;DataRow&lt;/SPAN&gt; dr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;BR&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;DataGridViewRow&lt;/SPAN&gt; dgvr &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; list)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 5"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;dr = ((&lt;SPAN style="COLOR: #2b91af"&gt;DataRowView&lt;/SPAN&gt;)dgvr.DataBoundItem).Row;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 5"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;dr.Delete();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'ＭＳ ゴシック'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;LINQ to Objectは、データベースのＳＱＬ文のように、結果セットを一度に取ってきて終わりというわけではないことに注意しよう。&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/126569.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>【コードスニペット】Linqを使ってDataGridViewで選択されている行・選択されていない行を取得する。</title><link>http://blogs.wankuma.com/trapemiya/archive/2008/03/03/126037.aspx</link><pubDate>Mon, 03 Mar 2008 19:11:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2008/03/03/126037.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/126037.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2008/03/03/126037.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/126037.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/126037.aspx</trackback:ping><description>&lt;P&gt;radioButton1がチェックされている場合は、DataGridViewで選択されている行を取得できます。&lt;BR&gt;radioButton1がチェックされていない場合は、DataGridViewで選択されていない行を取得できます。&lt;/P&gt;
&lt;P&gt;var c = from DataGridViewRow r in dataGridView1.Rows where r.Selected == radioButton1.Checked select r;&lt;/P&gt;
&lt;P&gt;foreach (DataGridViewRow dgvr in c)&lt;BR&gt;{&lt;BR&gt;　　　・&lt;BR&gt;　　　・&lt;BR&gt;　　　・&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/126037.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>LINQを使ってデータテーブルから１レコードのみ抽出する時</title><link>http://blogs.wankuma.com/trapemiya/archive/2008/01/31/120117.aspx</link><pubDate>Thu, 31 Jan 2008 12:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2008/01/31/120117.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/120117.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2008/01/31/120117.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/120117.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/120117.aspx</trackback:ping><description>&lt;P&gt;データテーブルからレコードを抽出する際に、例えば以下のようなコードを書くと思う。&lt;/P&gt;
&lt;P&gt;var drs = from dt in hogeDataSet.hogeDataTable.AsEnumerable()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where (dt.Field&amp;lt;string&amp;gt;("cdColumn") == cd)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select dt;&lt;/P&gt;
&lt;P&gt;foreach (hogeDataSet.hogeDataTableRow dr in drs)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;・&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;・&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;・&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;だがしかし、データテーブルがコードマスターのような機能をしており、常に１件しかレコードを読まないとしたらどうであろうか？&lt;BR&gt;なんとなくforeachは使いたくない。だって１件しかないことがわかっているんですもの。&lt;BR&gt;で、以下のように書いてみた。&lt;/P&gt;
&lt;P&gt;var drs = from dt in hogeDataSet.hogeDataTable.AsEnumerable()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where (dt.Field&amp;lt;string&amp;gt;("cdColumn") == cd)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select dt;&lt;/P&gt;
&lt;P&gt;IEnumerator&amp;lt;hogeDataSet.hogeDataTableRow&amp;gt; enumerator = drs.GetEnumerator();&lt;BR&gt;enumerator.MoveNext();&lt;BR&gt;hogeDataSet.hogeDataTableRow dr = (hogeDataSet.hogeDataTableRow)enumerator.Current;&lt;/P&gt;
&lt;P&gt;・・・。どちらがいいか微妙だ・・・。でもやっぱりforeachかな？　たまたま１レコードしかない場合だよと割り切るのが正解のような気がする。でも、IEnumeratorを使った下の書き方だとソースコードから１レコードしかないことが読み取れるし・・・。&lt;BR&gt;ちょっと悩んでます。&lt;BR&gt;もしくはADO.NETのExecuteScalar()のようなメソッドを、上記のIEnumeratorを用いて用意しちゃえばいいかな？&lt;/P&gt;
&lt;P&gt;LINQを使って他に良い方法があれば教えて下さい。&lt;BR&gt;&lt;BR&gt;あと、C# 3.0に対応したソースコードをカラー化してブログとかに張り付けられるようなツールをどなたか紹介して下さい。m(_ _)m&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/120117.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>trapemiya &lt;miya.hideki@nifty.com&gt;</dc:creator><title>【メモ】LINQ関連の記事</title><link>http://blogs.wankuma.com/trapemiya/archive/2007/10/25/104051.aspx</link><pubDate>Thu, 25 Oct 2007 11:09:00 GMT</pubDate><guid>http://blogs.wankuma.com/trapemiya/archive/2007/10/25/104051.aspx</guid><wfw:comment>http://blogs.wankuma.com/trapemiya/comments/104051.aspx</wfw:comment><comments>http://blogs.wankuma.com/trapemiya/archive/2007/10/25/104051.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/trapemiya/comments/commentRss/104051.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/trapemiya/services/trackbacks/104051.aspx</trackback:ping><description>&lt;P&gt;LINQ and Stored Procedures&lt;BR&gt;&lt;A href="http://blogs.msdn.com/zainnab/archive/2007/10/25/linq-and-stored-procedures.aspx"&gt;http://blogs.msdn.com/zainnab/archive/2007/10/25/linq-and-stored-procedures.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;LINQ To Sql tutorial Series By Scott Guthrie (Pdf Book Format)&lt;BR&gt;&lt;A href="http://it-box.blogturk.net/2007/10/19/linq-to-sql-tutorial-series-by-scott-guthrie-pdf-book-format/"&gt;http://it-box.blogturk.net/2007/10/19/linq-to-sql-tutorial-series-by-scott-guthrie-pdf-book-format/&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/trapemiya/aggbug/104051.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>