我有4个字符串列表 - 这些字符串长度相同
var nameList;
var dateList;
var versionList;
var downloadList;
我目前正在单独循环遍历每个列表,然后将每个列表的内容添加到并发队列
var concurrentNameQueue= new ConcurrentQueue<string>();
var concurrentDateQueue= new ConcurrentQueue<string>();
var concurrentVersionQueue= new ConcurrentQueue<string>();
var concurrentDownloadQueue= new ConcurrentQueue<string>();
foreach (var name in nameList)
{
concurrentNameQueue.Enqeue(name);
}
foreach (var date in dateList)
{
concurrentDateQueue.Enqeue(date);
}
foreach (var version in versionList)
{
concurrentVersionQueue.Enqeue(version);
}
foreach (var download in downloadList)
{
concurrentDownloadQueue.Enqeue(download);
}
这个过程似乎非常重复,让我想知道是否有更有效的方法来遍历所有这些列表
有更好的方法吗?
答案 0 :(得分:2)
您可以编写扩展方法然后调用它:
public static void Enqueue<T>(this ConcurrentQueue<T> queue, IEnumerable<T> items)
{
foreach (var item in items)
queue.Enqueue(item);
}
concurrentNameQueue.Enqueue(nameList);
concurrentDateQueue.Enqueue(dateList);
concurrentVersionQueue.Enqueue(versionList);
concurrentDownloadQueue.Enqueue(downloadList);
或者当您正在初始化上面的列表时,请使用需要IEnumerable<T>
作为输入的second
constructor:
var concurrentNameQueue = new ConcurrentQueue<string>(nameList);
var concurrentDateQueue = new ConcurrentQueue<string>(dateList);
var concurrentVersionQueue = new ConcurrentQueue<string>(versionList);
var concurrentDownloadQueue = new ConcurrentQueue<string>(downloadList);
但正如我在评论中提到的,您似乎应该创建一个包含4个属性的单个类,每个属性对应一个名称,日期,版本和下载。然后你有一个该类的列表,而不是保持4个列表同步。
答案 1 :(得分:0)
使用具有多个属性的数据结构
,而不是制作多个列表这就是OOP的优势。创建单个列表
public class DownloadItem
{
public string Name { get; set; }
public string Date { get; set; }
public string Version { get; set; }
public string Download { get; set; }
}