Tôi vẫn còn rất mới đối với LINQ và PLINQ. Tôi thường chỉ sử dụng vòng lặp và List.BinarySearch
trong nhiều trường hợp, nhưng tôi đang cố thoát ra khỏi suy nghĩ đó, nơi tôi có thể.Chạy một truy vấn LINQ đơn giản song song
public class Staff
{
// ...
public bool Matches(string searchString)
{
// ...
}
}
Sử dụng "bình thường" LINQ - xin lỗi, tôi không quen với các thuật ngữ - Tôi có thể làm như sau:
var matchedStaff = from s
in allStaff
where s.Matches(searchString)
select s;
Nhưng tôi muốn làm điều này trong song song:
var matchedStaff = allStaff.AsParallel().Select(s => s.Matches(searchString));
Khi tôi kiểm tra loại matchedStaff
, đó là danh sách bool
s, không phải là thứ tôi muốn.
Trước hết, tôi đang làm gì sai ở đây và thứ hai, làm cách nào để trả lại một List<Staff>
từ truy vấn này?
public List<Staff> Search(string searchString)
{
return allStaff.AsParallel().Select(/* something */).AsEnumerable();
}
trả về IEnumerable<type>
, không List<type>
.
Bạn vẫn có thể sử dụng cú pháp truy vấn (đó là những gì nó được gọi là) với PLINQ: 'từ s trong allStaff.AsParallel() trong đó s.Matches (searchString) chọn s'. – svick