SMBLibrary/Utilities/Generics/KeyValuePairList.cs
2016-12-31 13:15:32 +02:00

101 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Utilities
{
public partial class KeyValuePairList<TKey, TValue> : List<KeyValuePair<TKey, TValue>>
{
public bool ContainsKey(TKey key)
{
return (this.IndexOfKey(key) != -1);
}
public int IndexOfKey(TKey key)
{
for (int index = 0; index < this.Count; index++)
{
if (this[index].Key.Equals(key))
{
return index;
}
}
return -1;
}
public TValue ValueOf(TKey key)
{
for (int index = 0; index < this.Count; index++)
{
if (this[index].Key.Equals(key))
{
return this[index].Value;
}
}
return default(TValue);
}
public void Add(TKey key, TValue value)
{
this.Add(new KeyValuePair<TKey, TValue>(key, value));
}
public List<TKey> Keys
{
get
{
List<TKey> result = new List<TKey>();
foreach (KeyValuePair<TKey, TValue> entity in this)
{
result.Add(entity.Key);
}
return result;
}
}
public List<TValue> Values
{
get
{
List<TValue> result = new List<TValue>();
foreach (KeyValuePair<TKey, TValue> entity in this)
{
result.Add(entity.Value);
}
return result;
}
}
new public void Sort()
{
this.Sort(Comparer<TKey>.Default);
}
public void Sort(ListSortDirection sortDirection)
{
Sort(Comparer<TKey>.Default, sortDirection);
}
public void Sort(IComparer<TKey> comparer, ListSortDirection sortDirection)
{
if (sortDirection == ListSortDirection.Ascending)
{
Sort(comparer);
}
else
{
Sort(new ReverseComparer<TKey>(comparer));
}
}
public void Sort(IComparer<TKey> comparer)
{
this.Sort(delegate(KeyValuePair<TKey, TValue> a, KeyValuePair<TKey, TValue> b)
{
return comparer.Compare(a.Key, b.Key);
});
}
}
}