在 LINQ 查询中通过字符串动态输入"select"


List<int> list = new List<int> { 1, 2, 4, 5, 6, 7 };
string selectQuery = "x";
var result = from x in list
where x > 3
select selectQuery;

这段代码将返回"xxxx",我希望它返回4 5 6 7。

我想通过字符串动态输入选择,但这段代码返回字符串。我得到了一个条件表,对于每个条件,我想使用LINQ查询,所以我把选择语句放在一个字符串表中,我想对每个条件应用它。

这是因为您正在为每个项目选择(返回)selectQuery变量。

试试这个:

var result = from x in list
where x > 3
select x;

这将返回原始列表中与where子句中的条件匹配的每一项。

对不起,您不能在字符串中指定选择条件。我认为最接近的方法是在函数中指定标准,然后将函数赋给select。

试试这个:把你的select查询字符串转换成一个整数,然后用这个值过滤列表:

List<int> list = new List<int> { 1 ,2 ,4 ,5 ,6 ,7 };
string selectQuery = "2";
var result = from x in list
where x > Convert.ToInt32(selectQuery)
select x;

另一种方法是

list.Where(x => x > Convert.ToInt32(selectQuery)).ToList()

通过这种方式,您可以在字符串选择查询中使用动态值进行查询。

最新更新