考慮一類可被用作多種其他類的成員撰寫調用與Customer
相關聯。如果我想在內存中的檢查,我不喜歡這樣寫道:與表達<Func<T,bool>>相同的方式,函數功能<T,bool>
static Func<T,bool> Check<T>(Func<T,Customer> conv, string first, string last) {
return obj => conv(obj).FirstName == first && conv(obj).LastName == last;
}
我可以用我的檢查在內存中的序列如下:
var matchingOrders = orders
.Where(Check<Order>(x => x.Customer, "Foo", "Bar"))
.ToList();
var matchingProfiles = profiles
.Where(Check<Profile>(x => x.Customer, "Foo", "Bar"))
.ToList();
現在我想要做同樣的事情與Expression<Func<T,bool>>
:
static Expression<Func<T,bool>> Check<T>(Expression<Func<T,Customer>> conv, string first, string last)
不幸的是,同樣的伎倆行不通:
return obj => conv(obj).FirstName == first && conv(obj).LastName == last;
,並使用它像這樣:
var matchingOrders = dbContext.Orders
.Where(Check<Order>(x => x.Customer, "Foo", "Bar"))
.ToList();
var matchingProfiles = dbContext.Profiles
.Where(Check<Profile>(x => x.Customer, "Foo", "Bar"))
.ToList();
這會觸發一個錯誤:
CS0119: Expression denotes a
variable', where a
method group' was expected
我可以撰寫表情,我代表組成的一樣嗎?
建議的重複是死錯誤的:它由兩個相同的表情,而我撰寫鏈中的不同類型的表達式。投票重新開放。 – dasblinkenlight