让我说我的文件内容分为
List<string> contents
现在我想对所有内容进行某种解析方法,最后我想将它们粘贴到一个变量中
//after parsing
foreach(var c in content)
wholeContent += c;
我已经尝试过类似的事情:
async Task<string> Parse(string content)
{
//dosth
}
List<Task<string>> tasks = contents.Select(x=> Parse(x));
但要做到这一点,我必须具备:
async Task Parse(ref string content)
但不允许
该怎么做?
答案 0 :(得分:2)
这不是异步问题。使用Parallel类或PLInq:
<tr>
<td>Od:<input name="datumz" type="text" autocomplete="off" id="datepicker" placeholder="začiatočný dátum" style="border-radius: 3px;background-color: rgb(229, 226, 230);border: 3px solid #e5e2e6;margin-left: 5px;"></td>
<td>Do:<input name="datumk" type="text" autocomplete="off" id="date" placeholder="koncový dátum" style="border-radius: 3px;background-color: rgb(229, 226, 230);border: 3px solid #e5e2e6;margin-left: 5px;"></td>
<td>Meno OP:<input name="opp" type="text" autocomplete="off" placeholder="meno operátora" style="border-radius: 3px;background-color: rgb(229, 226, 230);border: 3px solid #e5e2e6;margin-left: 5px;"></td>
<td><input type="submit" value="Filtrovať" style="background-color: #dde53d;border: none;color: black;height: 35px;width: 85px;margin-left: 10px;"></td>
</tr>
答案 1 :(得分:0)
使用Parallel类,例如可以将一个简单的for循环并行化:
List<string> contents = new List<string>();
contents.Add("55");
contents.Add("some text");
contents.Add("a lone 5");
ConcurrentDictionary<int, string> concurrent = new ConcurrentDictionary<int, string>();
Parallel.For(0, contents.Count, i => concurrent[i] = Parse(contents[i]));
foreach(string s in concurrent.Values)
{
Console.WriteLine(s);
}
解析函数本身:
public static string Parse(string content)
{
return content.Replace("5", "test");
}
答案 2 :(得分:0)
作为另一个答案指出,您可能想使用PLINQ。假设您有一个功能:
string Parse(string str) { }
您可以像这样分析和组合字符串:
var result = contents.AsParallel().Select(Parse).Aggregate((x, y) => x + y);
这使用Select
通过您的Parse函数映射您的字符串,并使用Aggregate
通过串联将它们组合为一个字符串。