从NameValueCollection创建列表

时间:2016-12-27 10:51:24

标签: c#

我有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创建List是一个好习惯吗?

更新

我的目标是使用循环迭代List。为此,我创建了NameValueCollection列表。我是否必须创建一个列表来实现它或者有其他方法来实现它?

1 个答案:

答案 0 :(得分:1)

你问是否需要循环,但这取决于你需要做什么。根据您的更新语句,您希望将points IEnumerable转换为List<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>,请在.ToList()语句后添加.Select()