-2

我有一个 asp.net 应用程序,其中有 4 个列表集合对象

List<string> sTransID = new List<string>();
List<string> sOriginID = new List<string>();
List<string> sDestID = new List<string>();
List<string> sCourierID = new List<string>();

这些对象填充在应用程序的不同部分(在类内部,或后面的 aspx 代码等)。当列表元素大小增加时,页面性能会明显变慢。

读取这些对象的值时,循环遍历这些对象的最快方法是什么(以避免必须遍历 4 个对象)?我可以将这些对象合并到父 List 对象中并循环通过父对象吗?

更新:
通过合并,我的意思是:

var Parent = List<sTransID>, List<sOriginID>, List<sDestID>, List<sCourierID>  
var GetLocation = Parent[0];  // will return TransID[0], Origin[0], DestID[0], CourierID[0]
4

2 回答 2

0

我有一个合并的扩展方法dictionaries。如果您为列表修改它可能会有所帮助。

public static class DictionaryExtensions
{
    public static T MergeLeft<T, K, V>(this T me, params IDictionary<K, V>[] others)
        where T : IDictionary<K, V>, new()
    {
        var newMap = new T();

        foreach (var p in (new List<IDictionary<K, V>> { me }).Concat(others).SelectMany(src => src))
        {
            newMap[p.Key] = p.Value;
        }

        return newMap;
    }

}

使用如下:

var mergedDictionary = new Dictionary<string, string>().MergeLeft(dic1, dic2, dic3);
于 2013-09-16T15:55:13.463 回答
0

一种方法是在循环之前将列表连接在一起:

var itemsToLoop = sTransID.Concat(sOriginID).Concat(sDestID).Concat(sCourierID);
于 2013-09-16T15:56:11.720 回答