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

C# 如何将表达式传递到LINQ查询中?,c#,linq,C#,Linq,我可以将表达式传递到LINQ Select()方法: public IQueryable GetInfo(长限,表达式选择器) { 返回DbSet.Where(t=>t.id

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

public IQueryable GetInfo(长限,表达式选择器)
{
返回DbSet.Where(t=>t.id
如何使用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
}
public IQueryable GetInfo(长限,表达式选择器)
{
var结果=来自DbSet中的t
其中t.id<极限
选择选择器(t)//不工作
返回结果
}
您可以使用:

var result = (from t in DbSet
             where t.id < limit
             select t).Select(selector);
var result=(来自DbSet中的t
其中t.id<极限
选择t)。选择(选择器);
。。。但不能只在查询表达式中使用选择器,因为这会隐式地包装一个您不需要的额外层


现在还不清楚您为什么要在这里使用查询表达式,请注意-我强烈建议您熟悉这两种LINQ样式,并使用当时更合适的样式-在本例中,这就是您在原始代码中使用的样式。

不幸的是,这并不能回答我的问题。关键是要将表达式传递给查询。@enkryptor:它确实回答了以下问题:您不能在查询表达式中使用它。。。基本上,你不需要这么做。如果你能更清楚地解释你为什么要这么做,我们可以提供替代方案……我知道了……你能编辑你的答案吗?在解释之前加上“你不能”作为标题吗?@enkryptor:老实说,我对它的现状感到高兴。它展示了如何在查询表达式中使用它,很明显,您不能在查询表达式中使用它。不过我会用斜体字表示“内部”。(但仍不清楚你想要实现什么…)
var result = (from t in DbSet
             where t.id < limit
             select t).Select(selector);