gpt4 book ai didi

c# - 如何将表达式传递到 LINQ 查询中?

转载 作者:行者123 更新时间:2023-11-30 14:08:24 25 4
gpt4 key购买 nike

我可以将表达式传递给 LINQ Select() 方法:

public IQueryable<T> GetInfo(long limit, Expression<Func<MyType, T>> selector)
{
return DbSet.Where(t => t.id < limit).Select(selector)
}

如何使用 LINQ 风格的查询来做同样的事情?

public IQueryable<T> GetInfo(long limit, Expression<Func<MyType, T>> selector)
{
var result = from t in DbSet
where t.id < limit
select selector(t) // doesn't work
return result
}

最佳答案

你可以使用:

var result = (from t in DbSet
where t.id < limit
select t).Select(selector);

...但是您不能只在查询表达式内部使用选择器,因为它隐式包装了您不需要的额外层。

不清楚您为什么要在这里使用查询表达式,请注意 - 我强烈建议您熟悉这两种 LINQ 风格并使用当时更合适的任何一种 - 在这种情况下就是您拥有的风格在您的原始代码中。

关于c# - 如何将表达式传递到 LINQ 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com