Возможно ли выполнить приведенное ниже требование в C # 4.0
Текущий: У меня есть класс поставщика данных, который запрашивает DB / XML / ExternalDataSource Как показано ниже, функция PerformQuery принимаетдва параметра и возвращает список типа Result.
В моем клиентском приложении экземпляр вызова DataProvider для PerformQuery создаст список и возвратит.
Цель: Если результат запроса PerformQuery больше (например, 100K), то пользователю придется подождать.Таким образом, я могу создать фонового работника и обработать список, возвращаемый PerformQuery.
Но я хочу знать, может ли PerformQuery вернуть каждый элемент в своем выражении foreach функции вызывающей стороны в режиме синхронизации или асинхронном режиме.Вместо того, чтобы ждать построения всего списка в операторе foreach и снова обрабатывать список в клиентском приложении.
Вызывающий объект -> PerformQuery (a, b) ^ |||||Отправьте каждый элемент результата функции вызывающей стороны.<--------- <</p>
class DataProvider
{
public List PerformQuery(string param1, string param2)
{
List m_res = new List();
var m_queryRes = DataAccessor.GetResults(param1, param2);
foreach(var res in m_queryRes)
{
Result result = new Result();
result.Name = res.FirstName + res.SecondName;
result.Code = res.Code + "Some business logic";
m_res.Add(result);
}
return m_res;
}
}
class Result
{
Property Name;
Property Code;
}