我在看 Telerik的演示和我无法得到“计数”语句来工作。我相信,下面的命令只支持的EntityFramework,而不是LINQ2SQL。

return  CurrentDataSource.Products.Where(where).Count();

参数“其中”小写实际上是在ADO.Net DataService的(OData的)URL传递的字符串。此URL 被发送到LINQ提供进一步限制该查询。

如果未在LINQ2SQL的支持,我怎么能做出类似的声明?

有帮助吗?

解决方案

您需要使用一个lambda表达式由Queryable.Where方法中使用的谓词:

return CurrentDataSource.Products.Where(p => p.Id > 100).Count();

如果你真的想用一个字符串,然后看看动态LINQ,与斯科特谷的博客文章开始:的动态LINQ(第1部分:使用LINQ动态查询库)。然后,你应该能够编写查询类似于:

return CurrentDataSource.Products.Where("Id > 100").Count();

其他提示

您可以编写自己的通用的扩展,你应该怎么写一个最有效的视情况而定...但它可能应该是这样的:

public static class IQueryableExtensions 
{
    public static int Count(this IQueryable<T> query)
    {
       return query.ToList().Count;
    }
}

这可能不是最有效的方法,并只有当你有一个IQueryable工作。如果性能是没有问题的只是使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top