私はC#の初心者です(プログラミングではありません)。NameValueCollection オブジェクトの項目数を減らす最も簡単な方法は何ですか? たとえば、コレクションに 13 個の名前と値のペアがあり、それを最初の 5 個に切り詰めたいとします。本当にループで実行する必要がありますか?
ありがとう
私はC#の初心者です(プログラミングではありません)。NameValueCollection オブジェクトの項目数を減らす最も簡単な方法は何ですか? たとえば、コレクションに 13 個の名前と値のペアがあり、それを最初の 5 個に切り詰めたいとします。本当にループで実行する必要がありますか?
ありがとう
C#4.0を使用していて、拡張メソッドがコレクションで機能する場合は、単純にを記述できるはずですvar lFirst5 = lCollection.Take(5)
。
まあ。
NameValueCollectionを見てみたところ、.Take()を実行できないことがわかりました。私は個人的に別のコレクションを使用します...多分List<KeyValuePair<string, object>>
?
本当に使用NameValueCollection
したいが、元のコレクションからアイテムを本当に削除したい場合は、はい、ループで実行する必要があります。
for (int i = 0; i<4; i++)
{
myNameValueCollection.Remove(myNameValueCollection[i]);
}
NameValueCollection
を使用する必要がある唯一の理由は、.NET1.1以前にバインドされている場合であることに注意してください。他のすべてのバージョンの場合NameValueCollection
、Dictionary<string,string>
一見すると、LINQのTakeメソッドを使用して、このようなコレクションの最初の5つの要素を取得します。残念ながら、NameValueCollectionオブジェクトにはlinqからアクセスできません。
そのため、代わりに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を使用する必要がある場合は、NameValueCollectionをLINQにアクセスできるようにするためのこの関連する質問を確認できます。LINQを使用すると、生活が楽になります
C# Dictionary、または NameValueCollection などの Key-Value ペア コレクションには、GetRange、AddRange メソッドがありません...ただし、NameValueCollection の代わりに Dictionary を使用する場合は、Linq クエリを使用して作業を楽にすることができます。最初の 5 つの要素を削除できます。たとえば、「A」で始まる名前を選択できます。
var myMap = new Dictionary<string, string>();
var myMapFirst5 = myMap.Take(5);
var myMapWithA = myMap.Select(x => x.Key.StartsWith("A"));