Nadal jestem bardzo nowy dla LINQ i PLINQ. Generalnie używam tylko pętli i List.BinarySearch
w wielu przypadkach, ale staram się wyjść z tego nastawienia gdzie mogę.Uruchamianie prostej kwerendy LINQ równolegle
public class Staff
{
// ...
public bool Matches(string searchString)
{
// ...
}
}
Korzystanie z "normalnym" LINQ - Przepraszam, jestem zaznajomiony z terminologią - można wykonać następujące czynności:
var matchedStaff = from s
in allStaff
where s.Matches(searchString)
select s;
Ale chciałbym to zrobić równolegle:
var matchedStaff = allStaff.AsParallel().Select(s => s.Matches(searchString));
Kiedy sprawdzam typ matchedStaff
, jest to lista bool
s, która nie jest tym, czego chcę.
Po pierwsze, co robię źle tutaj, a po drugie, jak mogę zwrócić List<Staff>
z tego zapytania?
public List<Staff> Search(string searchString)
{
return allStaff.AsParallel().Select(/* something */).AsEnumerable();
}
powraca IEnumerable<type>
nie List<type>
.
Można nadal używać składni kwerendy (tak to się nazywa) z PLINQ: 'z s w allStaff.AsParallel() gdzie s.Matches (searchString) wybierz s'. – svick