簡體   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