首页 > 解决方案 > C# 在 lambda 表达式中使用动态字符串或查询

问题描述

我正在尝试使用动态 where 条件编写 ac# 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)

标签: c#lambda

解决方案


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

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

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


推荐阅读