我是Entity的新手,我正在尝试查找DbSet对象中与布尔条件匹配的所有元素,这些元素以字符串形式传递:
Example:
string condition = "Weight > 30 && Age == 20";
var results = context.Data.FindIf(condition);
其中Weight和Age是Data的属性,给定的布尔条件可以变化。我可以使用LINQ表达式轻松编写代码,但有没有办法以我描述的方式进行编写?
答案 0 :(得分:5)
表达式树可以在这里想要你想要的。您可以解析字符串以构建表达式树。
答案 1 :(得分:2)
你可以使用raw SQL query并只针对它执行普通的SQL吗?
context.Database.SqlQuery<Data>("SELECT * FROM [DataTable] WHERE Weight > 30 AND Age = 20");
答案 2 :(得分:1)
您可以使用DynamicLinqQuery库对IQueryable来源使用字符串epxressions。该库建立在MSDN文章表达式树和@tdbeckett共享的动态查询构建器
中描述的功能之上。它允许您将动态条件写为字符串,例如
using System.Linq.Dynamic;
var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London", 10);
可以使用Nuget包:
安装包DynamicQuery
完成安装后,您可以在项目中找到添加的HTML文件,以获取帮助文档。