繁体   English   中英

如何将表达式传递给LINQ查询?

[英]How to pass an Expression into a LINQ query?

我可以将Expression传递给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样式感到满意并使用当时更合适的东西 - 在这种情况下你是原始样式码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM