C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Linq to SQLにおけるWhere句の動的生成


(過去ログ 75 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■44223 / inTopicNo.1)  Linq to SQLにおけるWhere句の動的生成
  
□投稿者/ mono好き (1回)-(2009/12/02(Wed) 02:21:18)

分類:[.NET 全般] 

紆余曲折ありますが、Linq to SQL(Entitesも含み)について質問です。
SQLの代替としての利用を見当しているのですが、SQL文の組み立てのように
実行時に動的にLinqも組み立てたいと考えています。
例えば、テキストボックス等の入力値の有無に従って、Where句に条件を追加するといった具合です。
VBであれば、

Dim sql as String = "SELECT * FROM hoge"
if TextBox.Text <> "" then
sql += " WHERE foo=" + TextBox.Text

というイメージです。

他のDLinqやXLinqの場合は、Where句をdelegateすることで近い挙動が出来そうですが、
Linq to SQLの場合は、直接SQL文に変換されてしまう挙動に見受けられました。
恐らくLinq to Entitiesも同じ(未検証)かと思われますが、
何かWhere句等を動的生成する手立てはないでしょうか?
引用返信 編集キー/
■44224 / inTopicNo.2)  Re[1]: Linq to SQLにおけるWhere句の動的生成
□投稿者/ オショウ (438回)-(2009/12/02(Wed) 07:50:11)
No44223 (mono好き さん) に返信
> 紆余曲折ありますが、Linq to SQL(Entitesも含み)について質問です。
> SQLの代替としての利用を見当しているのですが、SQL文の組み立てのように
> 実行時に動的にLinqも組み立てたいと考えています。

  検索したら、こういうものがヒットしました。

  動的 LINQ
  http://chicasharp.net/scottgu/result2.aspx?target=%E5%8B%95%E7%9A%84+LINQ+%EF%BC%88%E3%83%91%E3%83%BC%E3%83%88+1%3A+LINQ+%E5%8B%95%E7%9A%84%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E4%BD%BF%E7%94%A8%EF%BC%89

  如何?

以上。
引用返信 編集キー/
■44240 / inTopicNo.3)  Re[2]: Linq to SQLにおけるWhere句の動的生成
□投稿者/ 渋木宏明(ひどり) (1257回)-(2009/12/02(Wed) 12:14:30)
渋木宏明(ひどり) さんの Web サイト
LINQ to SQL で、最終的に SQL 文に展開されるクエリの Where() などが受け取る条件式は、System.Linq.Expression 名前空間で定義されている Expression 派生クラスで表現された構文木です。

なので、UI から与えられた検索条件をもとに、コードで構文儀を組み立てればよいです。

岩永さんの記事とか参考にしてみては。

http://ufcpp.net/study/csharp/sp3_expression.html


引用返信 編集キー/
■44255 / inTopicNo.4)  Re[3]: Linq to SQLにおけるWhere句の動的生成
□投稿者/ mono好き (2回)-(2009/12/02(Wed) 15:06:18)
>オショウさん
本家
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
ともに参考になりました。
文法評価がコンパイル時に行えないところは、トレードオフといった具合ですね。


>渋木宏明さん
上記DynamicQueryを詳細かつ必要最小限での独自コード実装を行うと見受けました。
自由度は高いと感じましたが、DynamicQueryと比較して可読性と利便性が劣る実装になりそうとも感じます。

両テクニックで要望を満たせるか検討したいと思います。
有難うございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -