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