合并列表<t>对象</t>

时间:2013-09-16 15:52:29

标签: c# asp.net collections

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

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代码等)。当List元素大小增加时,页面性能显着降低。

在读取它们的值时循环访问这些对象的最快方法是什么(为了避免必须遍历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]

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

var itemsToLoop = sTransID.Concat(sOriginID).Concat(sDestID).Concat(sCourierID);