我有一个名为 FILTRE_LINKLER
的表,列的名称是
- 身份证
- SEF_URL
- 条件
例如,
- ID=1
- SEF_URL="测试/"
- CONDITIONS="股票>50"`
我想让 CONDITIONS 部分成为 linq where 子句。
var product = (from d in db.PRODUCTS
where *CONDITIONS from DB*
select new ProductModel
{
Description= d.DESCRIPTION,
Brand= d.BRANDS.BRAND,
SefUrl = sef_url,
Name= d.NAME,
});
我尝试这样做:
var query = db.FILTRE_LINKLER.Select(x => x.CONDITIONS);
var product = (from d in db.PRODUCTS
where query
select new ProductModel
{
Description= d.DESCRIPTION,
Brand= d.BRANDS.BRAND,
SefUrl = sef_url,
Name= d.NAME,
});
但我有一个错误,即无法将类型“System.Linq.IQueryable”隐式转换为 bool。
我编辑是因为“问题已解决”。解决方案:
下载 Install-Package System.Linq.Dynamic -Version 1.0.7(@StepUp 说的)然后添加到类中
using System.Linq.Dynamic;
然后是这样的代码,
var whereCondition = db.FILTRE_LINKLER.Select(x => x.CONDITIONS).FirstOrDefault();
var product = (from d in db.PRODUCTS
where query
select new ProductModel
{
Description= d.DESCRIPTION,
Brand= d.BRANDS.BRAND,
SefUrl = sef_url,
Name= d.NAME,
}).Where(whereCondition);
你要问的是将数据库中存在的条件动态转换为 linq 中的 where。虽然没有神奇的声明,但说使用它。您必须编写一个扩展,它能够解释写入数据库的条件并返回一个谓词,然后您可以在 where 子句中使用该谓词。
我是一名优秀的程序员,十分优秀!