我有一个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]
答案 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);