C#在lambda表达式中使用动态字符串或查询

时间:2018-05-09 22:08:59

标签: c# lambda

我正在尝试用动态where条件编写一个c#lambda表达式,并尝试理解where where condition里面的内容类型。如何动态调用where子句中的内容?

我在这里以字符串为例

string query1 = "p=>p.id == 1 && p.name==\"abc\" ";
string query2 = "p=>p.id == 2 && p.name==\"def\" ";

//Normal Lambda Expression:
var details = _db.MyTable.Where(p=>p.id == 1 && p.name=="abc")

//Trying to check these if it works 
var details1 = _db.MyTable.Where(query1)

var details2 = _db.MyTable.Where(query2)

1 个答案:

答案 0 :(得分:2)

Lambda表达式可以在其范围内使用变量,因此您可以将其编写为:

int queryId = 1;
string queryName = "abc";
var details = _db.MyTable.Where(p=>p.id == queryId && p.name== queryName);

通过这种方式,您可以动态确定queryIDqueryName是什么,并将它们传递给lambda表达式。我还假设您打算检查与==的平等,而不是与=分配。