我正在使用EF 6查询存储了animals
的数据库表。
var results = _ctx.Animals.ToList();
那我需要处理某些类型的动物的方法很少。
public void ProcessDogs(List<Animal> data)
{
var dogs = data.Where(t=> t.Category == "dog").ToList();
// do some other work on the dogs
}
public void ProcessCats(List<Animal> data)
{
var cats = data.Where(t=> t.Category == "cat").ToList();
// do some other work on the cats
}
public void ProcessCamels(List<Animal> data)
{
var camels = data.Where(t=> t.Category == "camel").ToList();
// do some other work on the camels
}
如何最佳地并行处理从表返回的所有记录?我无法使用async-await
!
答案 0 :(得分:0)
简单。一个线程读取项目,然后将它们排入队列以进行处理,多个线程将其取出并进行处理。一个线程足以处理数据读取,根据网络的性质,数据很可能还是通过一根以太网电缆传输。
答案 1 :(得分:0)
您可以使用Parallel.ForEach
var items = new [] {"cat", "dog", "camel"};
Parallel.ForEach(items, animal => {
var list = data.Where(t=> t.Category == animal).ToList();
// do rest
});