我有两个Hashtables。
我正在尝试获得联合,交集和差异,但我如何在这两个哈希表之间进行循环和比较(hashtable1.Count
不等于hashtable2.Count
),有人知道怎么用 linq 吗?
public Hashtable operator +(Hashtable g1, Hashtable g2) //union
{
Hashtable result = new Hashtable();
//loop
{
if(!result.Contains(g1[i]))
{
result.Add(g1[i]);
}
if(!result.Contains(g2[i]))
{
result.Add(g2[i]);
}
}
return result;
}
public Hashtable operator -(Hashtable g1, Hashtable g2) //intersection
{
Hashtable result = new Hashtable();
//loop
{
if (g1[i] == g2[i])
{
result.Add(g1[i]);
}
}
return result;
}
public Hashtable operator /(Hashtable g1, Hashtable g2) //difference
{
Hashtable result = new Hashtable();
//loop
{
if (g1[i] != g2[i])
{
result.Add(g1[i]);
}
}
return result;
}
答案 0 :(得分:0)
如果你使用Hashtable而不是IEnumerable<T>
,那么使用Dictionary<TKey, TValue>
扩展方法会很困难。
因为Hashtable不是泛型类型。
所以没有Hashtable.Union
可用,不是Hashtable.Keys.Union
。
您必须执行类似
的操作hashtable1.Keys.Cast<int>().Union(hashtable2.Keys.Cast<int>());
但是......如果键不是int会发生什么?
如果您将Hashtable
更改为Dictionary<TKey, TValue>
,您就可以执行以下操作
var resultDictionary = dic1.Intersects(dic2).ToDictionary(m => m.Key, m => m.Value);
var resultDictionary = dic1.Except(dic2).ToDictionary(m => m.Key, m => m.Value);