使用布尔表达式的C#Entity Framework查询?

时间:2015-07-30 17:12:05

标签: c# linq entity-framework

我是Entity的新手,我正在尝试查找DbSet对象中与布尔条件匹配的所有元素,这些元素以字符串形式传递:

Example: 
string condition = "Weight > 30 && Age == 20";
var results = context.Data.FindIf(condition);

其中Weight和Age是Data的属性,给定的布尔条件可以变化。我可以使用LINQ表达式轻松编写代码,但有没有办法以我描述的方式进行编写?

3 个答案:

答案 0 :(得分:5)

表达式树可以在这里想要你想要的。您可以解析字符串以构建表达式树。

https://msdn.microsoft.com/en-us/library/bb397951.aspx

https://msdn.microsoft.com/en-us/library/bb882637.aspx

答案 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文件,以获取帮助文档。