1
我想知道如何動態地傳遞一個對象的屬性作爲將在Where
方法IQueryable
中使用的lambda的一部分。linq的Where方法的動態lambda
假設我有這樣的代碼:
var list = new List<Item>();
...
var filtered = list.AsQueryable().Where(x => x.SomePropertyA.Contains(someStringValue));
我的任務就是讓最後一條語句作爲一種通用的方法和使用參數:
IQueryable<Item> SomeMethod(Expression<Func<Item, string>> expr, string stringValue) {
return list.AsQueryable().Where (???);
}
SomeMethod(x => x.SomePropertyA, someStringValue);
SomeMethod(x => x.SomePropertyB, someStringValue);
...
我的膽量告訴我,我將不得不使用表達式類來調用由expr
返回的字符串的Contains
方法,但不知道如何做到這一點,因爲我不是很famic騙子用這種...
在運行時你選擇什麼屬性來傳遞方法? – terrybozzio
該方法將用於多個地方,具有不同的對象和不同的屬性。其任務是儘可能使方法儘可能通用。 – Vlad
您可以使用[Reflection](http://msdn.microsoft.com/zh-cn/library/ms173183.aspx)獲取您想要的屬性 – Caleb