【发布时间】:2017-03-24 01:26:35
【问题描述】:
我正在尝试使用 Dynamic Linq 库来查询我的实体框架数据源。我已将正确的包添加到我的项目中,并使用了以下语法
var salesEntities = dashboardEntity.FactSales.Where(d => d.DateKey >= startDate).Where(d => d.DateKey <= endDate)
.Where(c => c.CompanyID == companyID)
.Where("StoreID==@0",1)
.ToList();
我也试过
.Where("StoreID=1")
根据我在 ScottGu 博客文章中找到的示例,大多数动态查询 SO 问题似乎都暗示了这一点。谁能帮我看看我缺少什么来完成这项工作?
它不会产生错误,只是根本无法返回任何数据。
【问题讨论】:
-
我刚刚创建了一个简单的测试样本,我需要使用Dynamic Linq的原因是因为用户需要能够选择1个或多个商店在运行时动态查看,这就是为什么.Where StoreID 的 () 与其他的是分开的
-
我上次检查linq时,它不支持那种语法。您可能需要构建自己的谓词...谓词基本上用于创建动态查询...将多过滤器搜索视为可能的场景。这是一个很好的例子:c-sharpcorner.com/UploadFile/c42694/…... C# 6.0 已经有一个
PredicateBuilder,你可能想检查一下。 -
你可以试试
.Where(s => s.StoreID == 1)吗?它是否返回数据? -
Dynamic LINQ的文档源代码可以在here找到。
-
IQueryable<T>上的@DavidEspino LINQ 方法采用可以通过两种方式构造的表达式:编译器生成 --.Where(x => x.StoreID = 1),并在运行时使用System.Linq.Expressions.Expression类中的静态方法构建,例如如.Constant、MakeMemberAccess和Parameter。 Dynamic LINQ library 允许第三个选项——字符串然后被转换成表达式。
标签: c# entity-framework linq dynamic-linq