- - PR -
LINQ技術を利用したデータ操作
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-28 19:08
いつもお世話になっております。。
現在 Visual Studio 2008(.NET3.5)にて開発を進めています。 DB:SQLServer2005 言語:C# LINQ技術によりデータの取得を行っているのですが、 取得したEntityのデータ操作の仕方がどうもよくわかっていません。 取得したエンティティにエラーチェックをかまして、 その結果をデータグリッドビューコントロールに反映させたいのですが。。 (C#にてエラーチェックの共通部品が用意されてしまっているためSP等は使用できない状況です。) 詳細として、以下のサンプルソースのコメントアウト部分を解決したいのですが、 何か良い方法があればご教授お願いできますでしょうか? //ソース開始 public partial class Form1 : Form { delegate int SampleDelegate(int x, int y); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { BumonMst bumonmst = new BumonMst(); DataClasses1DataContext dataContext = new DataClasses1DataContext(); var query = from p in dataContext.BumonMst where p.BumonCd.Length >= 3 select p; //ここでqueryに対してcheckBumonCdメソッドを使いたい. //checkBumonCdがtrueのレコードに対して項目「flg」(フラグ:CHAR(1))に"1"を立てる処理を行う。 this.dataGridView1.DataSource = /*上でエラーチェックをしたデータエンティティ?をDataSourceに割り当てる*/; } private bool checkBumonCd(string bumoncd) { if (bumoncd.Equals("001")) { return true; } else { return false; } } } //ソース終了 以上よろしくお願いします。 | ||||
|
投稿日時: 2008-04-28 20:11
query をループしてチェックするんじゃダメ?
# bumonmstって何に使ってるんだろう。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2008-04-30 10:45
queryにたいしてToListとか使ってLISTにしたうえでループをまわしてcheckBumonCdを適用するのがプログラムとしてはわかりやすいかなぁ。
BumonMstが持つプロパティ(というかテーブルの項目数)が少ないなら、select pとしてBumonMst型(のはず)を返すんじゃなくて、selectの中で各項目の値を返すようにして、そこでcheckBumonCdを実行してflgの値を設定するのもありかも。 そんな感じで作ったデータをそのままDataSourceに渡せば、表示するだけならできるはず。 | ||||
|
投稿日時: 2008-04-30 12:36
かるあさん、どっとねっとふぁんさん返答どうもありがとうございます。
>BumonMstが持つプロパティ(というかテーブルの項目数)が少ないなら、select pとして >BumonMst型(のはず)を返すんじゃなくて、selectの中で各項目の値を返すようにして、 >そこでcheckBumonCdを実行して flgの値を設定するのもありかも。 このような形で実現してみました。 <pre> //ソース開始 public partial class Form1 : Form { delegate int SampleDelegate(int x, int y); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { BumonMst bumonmst = new BumonMst(); DataClasses1DataContext dataContext = new DataClasses1DataContext(); //部門コードに対してプライベートメソッド使用 var query = from p in dataContext.BumonMst where p.BumonCd.Length >= 3 select new { BumonCd = p.BumonCd ,BumonMei = p.BumonMei ,Flg = this.checkBumonCd(p.BumonCd.ToString()) }; this.dataGridView1.DataSource = query; } private bool checkBumonCd(string bumoncd) { if (bumoncd.Equals("211111")) { return true; } else { return false; } } } //ソース終わり </pre> 参照:どっとねっとふぁん様の「LINQな世界へ招待」 http://clr-h.net/launch2008/CLRH_Launch2008_Session3.pdf 何分、3.5に慣れていないものでまた何かありましたら、よろしくお願いします。。 | ||||
|
投稿日時: 2008-04-30 19:12
よさげな答えがでているので、以下は参考までに。。。
そうですね、ストアドでも見られますが 「手続き言語系」(女性系)と「非手続き言語系」(男性系) が混在する場合なぜか「非手続き言語系」に突っ込みたくなる (かましたくなる) 衝動にかられますね。。。。 これはPG性(サガ)? しかし、突っ込みたくなる衝動を抑えるのが悟りの境地です。 |
1