如何设置NameValueCollection的长度

时间:2010-10-06 06:41:37

标签: c# namevaluecollection

我是C#的新手(不是编程)。请问,减少NameValueCollection对象中项目数的最简单方法是什么?例如,我在集合中有13个名称 - 值对,我想将它剪切到第一个5.我真的必须在循环中进行吗?

感谢名单

4 个答案:

答案 0 :(得分:0)

如果您使用的是C#4.0并且扩展方法适用于您的收藏,那么您应该只需编写var lFirst5 = lCollection.Take(5)

咩。

刚看了一下NameValueCollection,我看到你不能这样做.Take()就可以了。我个人会使用不同的收藏......也许List<KeyValuePair<string, object>>

答案 1 :(得分:0)

如果你真的想使用NameValueCollection并且你真的想从原始集合中删除项目,那么是的,你必须在循环中执行:

for (int i = 0; i<4; i++)
{ 
     myNameValueCollection.Remove(myNameValueCollection[i]);
}

请注意,使用NameValueCollection的唯一原因是当您绑定到.NET 1.1或更早版本时。对于所有其他版本,等同于NameValueCollection的是Dictionary<string,string>

答案 2 :(得分:0)

乍一看,我会使用LINQ的Take方法来获取这样一个集合的5个第一个元素。不幸的是,linq无法访问NameValueCollection对象。

这就是我建议使用List或SortedList的原因:

using System.Linq;

var y = new SortedList<string, string>();
y.Add("Element1Key", "Element1Value");
y.Add("Element2Key", "Element2Value");
...
y.Add("Element20000Key", "Element20000Value"); // ;)
var MyFirstFive = y.Take(5);

如果您确实需要使用NameValueCollection,那么您可以查看引用make a NameValueCollection accessible to LINQ的相关问题。使用LINQ将使您的生活更轻松

答案 3 :(得分:0)

在C#Dictionary中,或任何Key-Value对集合(如NameValueCollection)没有GetRange,AddRange方法...... 但是,如果您使用Dictionary而不是NameValueCollection,则可以使用Linq查询来简化您的生活。 您可以删除前5个元素,例如,您可以选择以“A”开头的名称:

        var myMap = new Dictionary<string, string>();
        var myMapFirst5 = myMap.Take(5);
        var myMapWithA = myMap.Select(x => x.Key.StartsWith("A"));