1

有没有办法获取 LinqDataSource 用来检索数据的 IQueryable 对象?我认为这可能来自所选事件,但似乎并非如此。

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

我还应该注意,我使用的是 DataPager,因此并非所有行都被返回。这就是为什么我想获得 IQueryable,这样我就可以做类似的事情

int count = query.Where(i => i.Category == "Category1").Count();
4

2 回答 2

1

使用QueryCreated 事件QueryCreatedEventArgs有一个Query包含IQueryable.

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

于 2012-05-31T11:36:01.183 回答
0

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

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

同样,根据 GetListOfCategories 返回的对象类型,您最终可能会获得所有条目的正确值,或者只是那些已加载并在内存中的条目,但这是 Linq-to-Objects(在内存中)和Linq 到其他数据源(延迟加载)。

于 2012-05-30T23:32:15.767 回答