【发布时间】:2011-06-10 22:46:18
【问题描述】:
我正在尝试将以下逻辑放入一个扩展方法中,让我为字段的选择器传入一个 Func。
public class MyClass {
public decimal someValue {get; set;}
}
public class NumericSearch {
decimal searchValue {get; set;}
// Will be =, <=, >=, >, <
string searchType {get; set;}
}
...
List<MyObject> listOfClass = { ... };
if (search.searchType == "=") {
listOfClass = listOfClass.Where(l=>l.someValue == 123).ToList();
} else if (search.searchType == "<=") {
listOfClass = listOfClass.where(l=>l.someValue <= 123).ToList();
} else if (...){
...
}
我的目标是能够这样称呼它:
var filteredList = listOfClass.applyNumericSearch(l=>l.someValue, new NumericSearch() { searchValue = 123, searchType = "<="} );
到目前为止,我的方法签名看起来像这样,但我不确定如何处理 Lamda /selection 部分以实际完成我想要完成的工作:
public static IEnumerable<TSource> applyNumericSearch<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector, NumericSearch search) {
【问题讨论】:
标签: c#-4.0 lambda extension-methods