DataSource.Table.Where(stringOfConstraint)不LinqToSQL存在的OData支持?
-
26-09-2019 - |
题
我在看这 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工作。如果性能是没有问题的只是使用它。
不隶属于 StackOverflow