BLToolKit:それはのIQueryableをサポートしていますか?
-
25-09-2019 - |
質問
通常BLToolKit Iと次のようにDBからデータをフェッチします:
using ( DbManager db = new MyDbManager() )
{
IList<MyObjects> objects = db
.SetCommand(query)//sometimes with additional parameters
.ExecuteList<MyObjects>()
;
}
I次のことを行う能力を持っていると思います:
using ( DbManager db = new MyDbManager() )
{
IQueryable<MyObjects> qObjs = db
.SetCommand(query)//sometimes with additional parameters
.ExecuteQuery<MyObjects>()// here I don't want query actually to be executed
;
// ... another logic, that could pass qObj into other part of program
IList<MyObjects> objects = qObjs
.Where(obj=>obj.SomeValue>=SomeLimit) // here I want to put additional filters
.ExecuteList() // and only after that I wan't to execute query and fetch results
;
}
(WHERE一部修正)のorignalクエリ文字列を変更していることを回避することが可能であるが、時にはそれがかなり複雑になっています。
それを行うための簡単な方法はありますか?
ありがとう。任意の考えを歓迎します!
解決
using ( DbManager db = new MyDbManager() )
{
IQueryable<MyObjects> qObjs =
from p in db.GetTable<MyObjects>()
//sometimes with additional parameters
select p;
// ... another logic, that could pass qObj into other part of program
IList<MyObjects> objects = qObjs
.Where(obj=>obj.SomeValue>=SomeLimit) // here I want to put additional filters
.ToList() // and only after that I wan't to execute query and fetch results
;
}
他のヒント
あなたはIQueriableを持つようにしたい場合は、
は、あなたがLINQのを使用する必要があります。 BlToolkit.LinqとBlToolkit.Data.Linqをインポートする必要があります。
IQueryable<DataModel.Object> query = db.Object;
If ((int)cmb_somthing.SelectedValue) > 0 {
int ID = (int)cmb_somthing.SelectedValue;
query = query.Where(m=> m.ID = ID);
}
query = query.Where(m=> m.Date >= StartDate &&
m.Date <= EndDate);
所属していません StackOverflow