如何获取LinqDataSource使用的IQueryable对象?

时间:2012-05-30 23:09:18

标签: linq linqdatasource

有没有办法获取LinqDataSource用于检索数据的IQueryable对象?我认为可以从 选择的 事件中进行,但它似乎不是。

我表格中的每一行都有一个类别字段,我想确定结果中每个类别有多少行。

我还应该注意到我正在使用DataPager,因此不会返回所有行。这就是为什么我想获得IQueryable,以便我可以做类似

的事情
int count = query.Where(i => i.Category == "Category1").Count();

2 个答案:

答案 0 :(得分:1)

使用QueryCreated eventQueryCreatedEventArgs的{​​{1}}属性包含Query

在创建原始LINQ查询之后引发事件,并且在发送到数据库之前包含查询表达式,而没有排序和分页参数。

答案 1 :(得分:0)

IQueryable中没有“已选定”事件。此外,如果您在服务器上过滤数据,即使API公开了它,也无法访问它,但回答部分问题,假设您有类别 - >产品,其中每个类别都有许多产品,您想要计算每个类别中的产品数量。这是一个简单的LINQ查询:

var query = GetListOfCategories();
var categoryCount = query.Select(c => c.Products).Count();

同样,根据GetListOfCategories返回的对象类型,您最终可能会为所有条目设置正确的值,或者只是加载并且在内存中的值,但Linq-to-Objects之间的差异(内存)和Linq到其他数据源(延迟加载)。