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

标签 c# lambda

我正在尝试编写一个带有动态 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);

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

关于C# 在 lambda 表达式中使用动态字符串或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50262759/

相关文章:

c# - RavenDB 4.0 存储原始 json

C# AutoResetEvent 不释放

c# - 在 linq 或 lambda 表达式中转换匿名对象的类型

java - Jackson JsonNode 序列化

c# - 声明为 .Where() 中使用的变量的 Func 使我的应用程序崩溃

python - 根据正则表达式选择要调用的 Python 函数

c# - 如何在 Windows 通用应用程序中显示来自网络文件夹或本地驱动器的图像

c# - 事务必须在连接可用于执行sql语句之前被释放

c# - C# 中的通用 Map/Reduce 列表扩展

c++ - 初始化列表中的 lambda 返回