我正在尝试编写一个带有动态 where 条件的 C# lambda 表达式,并尝试了解 where 条件内的内容类型。如何动态调用 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)
最佳答案
Lambda 表达式可以使用其作用域内的变量,因此可以将其写为:
int queryId = 1;
string queryName = "abc";
var details = _db.MyTable.Where(p=>p.id == queryId && p.name== queryName);
通过这种方式,您可以动态确定 queryID
和 queryName
是什么,并将它们传递给 lambda 表达式。我还假设您打算使用 ==
检查是否相等,而不是使用 =
进行分配。
关于C# 在 lambda 表达式中使用动态字符串或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50262759/