2016-12-27 23 views
-4

創建名單上有NameValueCollection類型:從NameValueCollection中

NameValueCollection args = new NameValueCollection(); 

,我也創建的NameValueCollection的列表:

List<NameValueCollection> argsList = new List<NameValueCollection>(); 

然後我覺得args變量並添加到argsList:

foreach (var point in points) 
{ 
    args = new NameValueCollection(); 

    args.Add("SESSION", ViewState[MgConstants.STR_SESSION].ToString()); 
    args.Add("MAPNAME", ViewState[MgConstants.STR_MAPNAME].ToString()); 
    args.Add("DIR", ""); 
    args.Add("TEXT", point.text); 

    argsCollection.Concat(args); 
} 

我的問題是從NameValueCollection創建列表的好習慣?

UPDATE

我的目標是通過使用列表loop.For爲此迭代我做的NameValueCollection的名單。我是否必須創建一個List來表示或者有任何其他方式來存檔它?

+1

這是不是很清楚你在這裏尋找什麼。當然,你可以創建一個'List ' - 但是目前還不清楚你想要實現什麼,所以我們不知道它是否有用。 (調用'Concat'幾乎肯定不是你想要的,儘管...'Add'也許不是你已經顯示了什麼'argsCollection'是...你的列表是'argsList'。) –

+1

一個集合和一個列表,在某些方面,是相同的東西。如果你問「從NameValueCollection創建List是否是一種好習慣?」,我會說不,因爲你正在創建一個「列表清單」,這在你的問題中沒有用處。請編輯你的問題,讓我更清楚。 –

+0

@HishamMaudarbocus請參閱更新 – Michael

回答

1

你在問你是否需要循環,但這取決於你需要做什麼。通過更新後的聲明中去,你想改變你的points這是一個IEnumerableList<NameValueCollection>

要做到這一點,你可以使用LINQ,不需要迭代,因爲這樣的:

argsCollection = points.Select(a => new NameValueCollection() 
{ 
    { "SESSION", ViewState[MgConstants.STR_SESSION].ToString() }, 
    { "MAPNAME", ViewState[MgConstants.STR_MAPNAME].ToString() }, 
    { "DIR", "" }, 
    { "TEXT", a.text } 
}); 

這假定argsCollectionIEnumerable。如果是List<T>,則在.Select()語句後面添加.ToList()

相關問題