通常,在使用BLToolKit时,我会通过以下方式从DB获取数据:
using ( DbManager db = new MyDbManager() )
{
IList<MyObjects> objects = db
.SetCommand(query)//sometimes with additional parameters
.ExecuteList<MyObjects>()
;
}我希望能够做到以下几点:
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部分)来解决这个问题,但有时会非常复杂。
有什么简单的方法可以做到吗?
谢谢。欢迎任何想法!
发布于 2011-01-06 11:11:25
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
;
}发布于 2014-10-27 11:55:48
如果你想使用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);https://stackoverflow.com/questions/4609002
复制相似问题