Я пытаюсь поместить следующую логику в метод Extension, который позволяет мне передать 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) {