문자열 목록 (예 : 문자열을 예로 든 것)이 있다고 가정합니다.비동기식 술어를 사용하여 목록을 필터링하는 방법
IEnumerable<string> fullList = ...;
과 같은 비동기 술어입니다.
static Task<bool> IncludeString(string s) { ... }
다음과 같은 제약, 술어하여 목록을 필터링하는 가장 간단한 방법은 무엇 :
- 조건부 실행하지 않아야 순차적으로 (목록이 긴 및 비동기 술어가 느린 가정은) 나는 해결책을 찾을 않았다
주문 보존한다 필터링 된 목록을 결과
var includedIndices = await Task.WhenAll(fullList.Select(IncludeString));
var filteredList = fullList.Where((_, i) => includedIndices[i]);
간단한 프레임 워크 호출에서 가능해야하지만 뭔가를 찾을 수 없었습니다. 당신은 당신이 필요로하는 Linq
기능 당신 자신의 구현을 만들 수
그러나 ParallelLinq는 여러 개의 비동기 작업을 동시에 기다리는 대신 많은 스레드를 사용하지 않습니다. 그래서 그것은 작동하지 않을 것이라고 말하지만, 그것은 무거운 무게일지도 모릅니다. –