有没有办法获取LinqDataSource用于检索数据的IQueryable对象?我认为可以从 选择的 事件中进行,但它似乎不是。
我表格中的每一行都有一个类别字段,我想确定结果中每个类别有多少行。
我还应该注意到我正在使用DataPager,因此不会返回所有行。这就是为什么我想获得IQueryable,以便我可以做类似
的事情int count = query.Where(i => i.Category == "Category1").Count();
答案 0 :(得分:1)
使用QueryCreated event。 QueryCreatedEventArgs
的{{1}}属性包含Query
。
在创建原始LINQ查询之后引发事件,并且在发送到数据库之前包含查询表达式,而没有排序和分页参数。
答案 1 :(得分:0)
IQueryable中没有“已选定”事件。此外,如果您在服务器上过滤数据,即使API公开了它,也无法访问它,但回答部分问题,假设您有类别 - >产品,其中每个类别都有许多产品,您想要计算每个类别中的产品数量。这是一个简单的LINQ查询:
var query = GetListOfCategories();
var categoryCount = query.Select(c => c.Products).Count();
同样,根据GetListOfCategories返回的对象类型,您最终可能会为所有条目设置正确的值,或者只是加载并且在内存中的值,但Linq-to-Objects之间的差异(内存)和Linq到其他数据源(延迟加载)。