Звучит так, будто вы хотите что-то очень похожее на следующее:
public class Program {
private static void Main(string[] args) {
Func<List<string>, IEnumerable> testQuery = x => x.Where<IEnumerable>(y => !y.Equals("Yucky"));
var testArray=new string[] {"Hello", "Yucky", " ", "World"};
var testClass=new MyClass(testQuery);
var resultStrings = testClass.query(testArray.ToList());
// Printing resultStrings should result in "Hello World"
foreach (string s in resultStrings) {
Console.Write(s);
}
}
}
public class MyClass {
public Func<List<string>, IEnumerable> query { get; private set; }
public MyClass(Func<List<string>, IEnumerable> aQuery)
{
query=aQuery;
}
}
РЕДАКТИРОВАТЬ: проверено, и да, это работает
В общем, вам нужно будет адаптировать Func<input, output>
так, как вы хотели бы, чтобы это закончилось, но я думаю, это должно работать на вас!
И только для небольшого количества читабельности, функция здесь может быть переписана с менее двусмысленными именами переменных, такими как: Func<List<string>, IEnumerable> testQuery = theListToQuery => theListToQuery.Where<IEnumerable>(stringInList => !stringInList.Equals("Yucky"));