我想做一种过滤链,使用queryOver功能过滤收据对象。根据用户在屏幕上选择的参数,链的长度可以有所不同。
最终,我希望链以某种方式运行如下:
public IList<Receipt> RunFilters()
{
IQueryOver<Receipt, Receipt> currQuery = NHibernateHelper.Session.QueryOver<Receipt>();
foreach (var item in filters)
{
currQuery = item.RunFilter(currQuery);
}
return currQuery.List();
}因此,问题是-应该如何定义RunFilter?我觉得应该是
public IQueryOver<Receipt, Receipt> RunFilter(IQueryOver<Receipt, Receipt> prevFilter)他们我可以做这样的过滤器
return prevFilter.Where(receipt => receipt.TotalSum > 0);但我做不到
return prevFilter.JoinQueryOver(v => v.Store).Where(vv => vv.Name.Equals(m_storeName));有什么想法吗?提前感谢
维克多
发布于 2011-09-13 15:03:47
return prevFilter.JoinQueryOver(v => v.Store).Where(vv => vv.Name.Equals(m_storeName));上面的代码可以写成
Store storeAlias = null;
return prevFilter.JoinAlias(v => v.Store, () => storeAlias).Where(() => storeAlias.Name == m_storeName);编辑:固定方程式
https://stackoverflow.com/questions/7394439
复制相似问题