LINQ
を使うととても便利で驚かされます。
複雑な
LINQ
を書いている時には、パズルみたいで不思議な楽しみもあるものです。
この
LINQ
。
決まった条件での抽出(Where)はいいのですが、条件が動的な場合に
とたんに途方にくれてしまいます。
たとえば、売上データを検索するとして
日付で検索したり、金額で検索したりとゆうことはよくあると思います。
つまり、検索条件があったりなかったり。
SQL
文でデータベースを操作しているときには
SQL
文の文字列を組み立てるだけですのでとても簡単なのですが。
で、
LINQ
で動的にWhereを実現する方法を調べてみました。
Visual Studio
Community 2017 for
Mac
で動作確認しています。
LINQ
の記述方法が
ラムダ式
の場合の方法です。
ラムダ式
だとメソッドチェーンでだらだらと記述をすることができます。
この時に、自分で
拡張機能
を作成すると独自のメソッドを書くことができます。
ものすごーくネットを検索して見つけました。
using System.Linq;
using System.Linq.Expressions;
public static IQueryable<TSource> WhereIf<TSource>
(this IQueryable<TSource> Source, bool Condition, Expression<Func<TSource, bool>> Predicate)
if (Condition)
return Source.Where(Predicate);
return Source;
実際に利用する時には
var Result = DbContext.Uriage
.WhereIf(viewSearch.Amount != null, u => u.Amount >= viewSearch.Amount)
.ToArray();
つまり、検索画面からの検索条件である「金額:Amount」の入力があった時だけ
Whereを実行してくれます。
これで動的な
LINQ
を実現することができました。
ただ、
ネットで調べてやっと実現できただけで、自分の力ではとても実現できないですね。
仕事の気分転換に、自立式ハンモック
以前からハンモックに憧れていたのですが。
屋内で使える自立式ハンモックがあるのですね。
どんなのが良いのかわからないので、1万円を切るくらいのを買ってみました。
想像していたより気持ちがいいです。
特に左右に揺らすととても気分が癒やされます。
プログラムでハマった時に気持ちを落ち着けることができそうです。