Lambda表達式我有一個具有以下簽名的擴展方法:兩個IN參數Lambda表達式與單個IN參數
public static class GenericSeeder
{
public static void Seed<TSeed, TEntity>(this DbContext context, IEnumerable<TSeed> seeds, Expression<Func<TEntity, TSeed, bool>> predicate)
{
// code that I'm looking for goes here
}
}
爲了有更好的理解什麼方法做的,這裏是它應該如何使用:
context.Seed<SeedClass, EntityClass>(seeds, (entity, seed) => entity.Name == seed.OtherProperty);
所以基本上,我使用謂詞來檢查種子是否已經被應用。然而,爲了做一次檢查,我必須用在哪裏或FirstOrDefault從LINQ到實體,它採用以下的參數:
Expression<Func<TEntity, bool>> predicate
所以我的lambda表達式是2 IN參數(TSeed,TEntity)已與功能1 OUT參數(布爾)。我需要遍歷提供的TSeed對象集合,併爲每個對象使用該對象作爲我的lambda表達式的參數,以生成具有1個IN參數(TEntity)和1個OUT參數(bool)的LINQ 2實體lambda表達式。
有沒有辦法做一個部分調用lambda表達式/ func來獲得另一個lambda表達式/ func?
雖然我想我知道你在問什麼我不是100%肯定。你可以使用類似'(x,y)=> {x.Frob(); return y == x;}'或類似的東西來做多語句lambdas(編譯得很好,可能不會用真正的編譯器)。這可以讓你在內部做只有一個屬性,然後是另一個屬性的東西。我不能保證除了linq之外的任何linq提供者都能夠做到這一點(並且實際上可能不會)。 – Chris
謂詞中的比較始終是'=='? –