あるパターンを使用Linq動的にフィルタを作成?
-
09-06-2019 - |
質問
あるパターンを使用Linq動的にフィルタを作成?
いを作成する必要がカスタムフィルタリングリストに基づいて、過去かだを動的に作成し、SQL---ということが可能でLinq.
解決
チェックを 動的Linq図書館 からScottGuのブログ:
例えば、以下は標準タイプ-安全な商品VBクエリを取得しますデータからNorthwindデータベースの表示をするASP.NET GridViewの制御:
Dim Northwind As New NorthwindDataContext
Dim query = From q In Northwind.Products Where p.CategoryID = 2 And p.UnitPrice > 3 Order By p.SupplierID Select p
Gridview1.DataSource = query
GridView1.DataBind()
使用LINQ DynamicQuery図書館が書き上記のクエリー式ではこのように
Dim Northwind As New NorthwindDataContext
Dim query = Northwind.Products .where("CategoryID=2 And UnitPrice>3") . OrderBy("SupplierId")
Gridview1.DataSource = query
GridView1.DataBind()
通知をどのように条件付き-where句とう-orderby節しているだけでなく文字列表現ではなくコードの表現です。が遅れた結合文字列のできる動的に構築します。例えば:私が提供するユーザーインタフェースにエンドユーザビジネスアナリスト用にアプリとして構築に関するお問い合わせ自身を含む任意の条件節).
他のヒント
動的Linqがかかるものと思われます。
で失わせないアイテム用のシナリオに対する発生していると考えること
IQueryable<Customer> query = db.Customers;
if (searchingByName)
{
query = query.Where(c => c.Name.StartsWith(someletters));
}
if (searchingById)
{
query = query.Where(c => c.Id == Id);
}
if (searchingByDonuts)
{
query = query.Where(c => c.Donuts.Any(d => !d.IsEaten));
}
query = query.OrderBy(c => c.Name);
List<Customer> = query.Take(10).ToList();
のようなものか。
var myList = new List<string> { "a","b","c" };
var items = from item in db.Items
where myList.Contains(item.Name)
select item;
ることをsql文のように
SELECT * FROM Items [t0] where Name IN ('a','b','c')
所属していません StackOverflow