【发布时间】:2021-07-14 21:44:42
【问题描述】:
我正在尝试将我的 SQL 规则放在 Linq 中,因为我的规则是从查询生成器生成的,我需要根据规则过滤我的数据,这是我的简单示例
class Program
{
static void Main(string[] args)
{
PromotionVm lObjPromVm = new PromotionVm();
for (int i = 1; i <= 5; i++)
{
PromotionList lObjPromList = new PromotionList();
lObjPromList.active_indicator = 1;
lObjPromList.principle_code = "a" + i;
lObjPromList.promotion_code = "b" + i;
lObjPromList.promotion_plan_number = 20 + i;
lObjPromList.promotion_type_code = 30 + i;
lObjPromList.start_date = DateTime.Now.AddDays(i);
lObjPromVm.promotion_list.Add(lObjPromList);
}
//var sqlRule= "promotion_type_code = 'expensive' AND Category IN('Food', 'Transportation', 'Shopping') AND(PaymentMode = 'Cash' OR PaymentMode = 'Debit Card' OR(Amount = 35))";
var sqlRule = "promotion_type_code = '33'";
// lObjPromVm.promotion_list.ToDataTable()
var lOutlut = lObjPromVm.promotion_list.Where(sqlRule);
}
}
class PromotionVm
{
public List<PromotionList> promotion_list { get; set; }
public PromotionVm()
{
promotion_list = new List<PromotionList>();
}
}
public class PromotionList
{
public string principle_code { get; set; }
public string promotion_code { get; set; }
public int promotion_plan_number { get; set; }
public int promotion_type_code { get; set; }
public DateTime start_date { get; set; }
public int active_indicator { get; set; }
}
我正在尝试使用System.Linq.Dynamic.Core;,但无法正常工作。
谁能建议我如何按 SQL 规则过滤我的数据? 在这里问了同样的问题How to use a string in the linq where clause? 但是响应给定的内容,它不起作用。
【问题讨论】:
-
试试
Func<Promotion, bool> sqlRule = p => p.promotion_type_code = "33"; -
嗨,我想根据 sql 规则进行过滤,该规则可以是我从前端获得的 sql where 子句之类的任何东西。例如 - //var sqlRule= "promotion_type_code = 'expensive' AND Category IN('Food', 'Transportation', 'Shopping') AND(PaymentMode = 'Cash' OR PaymentMode = 'Debit Card' OR(Amount = 35) )";
-
@charlieface,错字:你要在“33”之前加倍等号:
public => p.promotion_type_code == "33" -
听起来是个坏主意,如果有人输入
1=1; DROP DATABASE YourDb --会发生什么 -
我们可以在处理请求之前随时检查、删除、删除、截断等任何关键字。