ページ

2011年4月3日日曜日

◆LINQで.NetクラスのプロパティやメソッドをWhere条件に使う

LINQでWhere条件(だけではないが)を記述するときに、そのデータ型のプロパティやメソッドを使うことができる。
以下はそのサンプルである。

  1. switch (form.comboBox1.SelectedIndex)  
  2. {  
  3.     case 0:  
  4.         var authors0 = pubs.authors.Where(a => a.state == "CA" && a.contract == true);  
  5.         bindData(form, authors0);  
  6.         break;  
  7.     case 1:  
  8.         var authors1 = pubs.authors.Where(a => a.au_fname.Length ==5 );  
  9.         bindData(form, authors1);  
  10.         break;  
  11.     case 2:  
  12.         var authors2 = pubs.authors.Where(a => a.au_fname.EndsWith("e"));  
  13.         bindData(form, authors2);  
  14.         break;  
  15.     case 3:  
  16.         var employee1 = pubs.employee.Where(e => e.hire_date >= new DateTime(1989, 1, 1) && e.hire_date <=  
  17.             new DateTime(1990, 12, 31))  
  18.                                      .Select(e => new   
  19.                                          {  
  20.                                              e.emp_id,  
  21.                                              e.fname,  
  22.                                              e.hire_date,  
  23.                                              e.job_id,  
  24.                                              e.job_lvl,  
  25.                                              e.jobs,  
  26.                                              e.lname,  
  27.                                              e.minit,  
  28.                                              e.pub_id  
  29.                                          });  
  30.         bindData2(form, employee1);  
  31.         break;  
  32.     case 4:  
  33.         var employee2 = pubs.employee.Where(e => e.hire_date.Year == 1993);  
  34.         bindData2(form, employee2);  
  35.         break;  
  36.     default:  
  37.         break;  
  38. }  

まず8行目でau_fname(string型)のLengthプロパティを使っている。
12行目では同じくstring型のEndsWithメソッド。
33行目ではhire_date(datatime型)のYearプロパティを使っている。


このようにLINQでは.NETFrameworkの機能を使ったコーディングが可能になっている。
当然、最終的にはSQLに変換されるわけなのでSQLに該当する関数がないような物については使えないのだが、基本的なものはかなりサポートされているようである。

0 件のコメント:

コメントを投稿

私が最近チェックした記事