MrM*_*MrM 4 .net c# asp.net parallel-processing multithreading
我有一个运行的foreach循环.我正在研究并行功能.是否可以转换以下代码以使用并行编程?
int result ;
int counter;
foreach(DataRow dr in ds.Tables[0].Rows) {
switch(dr["Gender"].ToString()) {
case "Male":
result = functionMale(dr["Gender"].ToString());
counter += result;
break;
case "Female":
result = functionFemale(dr["Gender"].ToString());
counter += result;
break;
default:
result = functionUnkown(dr["Gender"].ToString());
counter += result;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的观察,我到目前为止只有以下内容.
Parallel.ForEach(ds.Tables[0].AsEnumerable(), dr => {
var result = functionMale(dr["Gender"].ToString();
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
你可以使用AsParallel和Sum:
Func<string, int> calculateGender =
gender =>
{
// nb: I don't know why you pass the gender to the method, but
// I've left your intent as-is
switch (gender)
{
case "Male": return functionMale(gender);
case "Female": return functionFemale(gender);
default: return functionUnknown(gender);
}
};
int counter = ds.Tables[0].AsEnumerable()
.AsParallel()
.Sum(dr => calculateGender(dr["Gender"].ToString()));
Run Code Online (Sandbox Code Playgroud)