我正在尝试用动态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)
答案 0 :(得分:2)
Lambda表达式可以在其范围内使用变量,因此您可以将其编写为:
int queryId = 1;
string queryName = "abc";
var details = _db.MyTable.Where(p=>p.id == queryId && p.name== queryName);
通过这种方式,您可以动态确定queryID
和queryName
是什么,并将它们传递给lambda表达式。我还假设您打算检查与==
的平等,而不是与=
分配。