从任务列表中获取所选任务的参数

问题描述 投票:0回答:1

我有一个任务列表,我使用 WhenAll 方法来执行它们。执行后,我需要用于执行该方法的参数,以便我可以对结果进行分类,因为结果不包括这些参数。在将 foreach 与任务列表一起使用时,如何访问该任务中使用的参数?

我知道我可以更改我的对象模型以在答案中包含参数,但它是一个整体,我现在不想碰它。只是想知道是否有办法做到这一点。

编辑一些代码示例:

 List<Task<List<myclass>>> tasklist = new List<Task<List<myclass>>>();  



 foreach (var item in list)
 {

  tasklist.Add(_someservice.getsome(item));

 }


  var taskresults = await Task.WhenAll(tasklist);
  List<databaseclass> to_be_saved = new List<databaseclass>();

  foreach (var item in tasklist)
  {
    //this is where I initialize the database class to save objects
    //in here I want to call the parameter from individual task.

  }
                            
c# .net .net-8.0
1个回答
0
投票

Task.WhenAll
返回的数组包含与提供的 Task
s
相同顺序的项目。

考虑到这一点,您可以使用

for

 循环来查找相应的参数(假设 
items
 是可索引集合):

for (var i = 0; i < taskresults.Length; i++) { var param = items[i]; var result = taskresults[i]; }
或者如果 

items

 是任意 
IEnumerable<T>
,那么你可以使用 
Enumerable.Zip
:

foreach (var tuple in items.Zip(taskresults)) { var param = tuple.First; var result = tuple.Second; }
    
© www.soinside.com 2019 - 2024. All rights reserved.