如何比较Dictionary键值和Tuple键值
本文关键字:键值 Dictionary Tuple 比较 何比较 | 更新日期: 2023-09-27 18:25:58
我有一个元组列表<Tuple<int, int>>
x,因为我得到的键和值为(45345,1)、(54645,0)、(45345,0我有一个Dictionary < int, string > PathList
,因为我得到的密钥和值为(45345,asdfsd234egsgdfgs56345),(54645,0dfsd234egsgdfgs 563456),(45345,0dfsd234Egsgdfgs5645234)
我正在尝试
foreach (var item in PathList)
{
if (x.Equals(item.Key) && x[item.Key].Equals(0))
{
string path1 = Path.Combine(GetDirectory(item.Value), item.Value);
File.Delete(path1);
}
}
我想检查id的X是否与id的PathList相同,并且值的X必须具有值0,然后在条件中输入。。。我现在所做的是,在任何情况下,我都无法进入If语句。
如何检查我的状况?
让我解释一下:检查这个qus是不是我正在返回一个元组列表,我在我的ascx页面中得到了(54356,0)、(64643,0)和(34365,1)。我有元组列表<Tuple<int, int>>
x,在这个x中我得到了列表的所有返回值,现在在同一个ascx页面上我有Dictionary < int, string > PathList
,我正在添加值ImgPathList.Add(54356456dfhgdfg6575dfghdf);所以我得到了两个不同的列表,一个是x,另一个是Pathlist。
现在我想检查一下。如果路径列表具有id和54356,x具有54356和0,则在if语句中输入else显示标记msg as file cannot be delete
我试图理解这个问题,但听起来我们已经理解了,比如:
var x = Tuple.Create(45345,0);
在这种情况下,您只需要:
string value;
if(PathList.TryGetValue(x.Item1, out value)) {
// there is an item in the dictionary with key 45345;
// the value is now in "value"
}
还有一些关于零检查的内容;不确定你的意思,但也许只需查看x.Item2
。
如果x
实际上是一个列表,那么在一个循环中执行:
foreach(var item in list) {
string value;
if(PathList.TryGetValue(item.Item1, out value)) {
// there is an element in the dictionary with key matching item;
// the value is now in "value"
}
}
可能这也是零检查的来源:
foreach(var item in list) {
string value;
if(item.Item2 == 0 && PathList.TryGetValue(item.Item1, out value)) {
// there is an element in the dictionary with key matching item;
// the value is now in "value"
}
}
然而,我不能充分理解你举的例子,所以我不能肯定。
将断点放在条件上,循环直到得到应该输入if语句的值,然后使用"监视"调试窗口查看表达式的哪一部分返回false。
也许这很有用:在我的项目中,我有一本字典:
public Dictionary<int, double> CpuDictionary = new Dictionary<int, double>();
在某个时刻,我试图使用找到一个密钥
int roundedcpupercentage = Convert.ToInt16(Math.Round(cpuusagepercentage));
if (CpuDictionary.ContainsKey(roundedcpupercentage))
{
temp.CPU = CpuDictionary[roundedcpupercentage];
temp.Watt = temp.CPU;
}
containskey函数非常适合我。也许你应该尝试类似的功能。
如果您想检查是否有一个元组的字典键为Item1
和Item2==0
:
foreach(var item in pathList) {
var xItem = x.Find(i => i.Item1 == item.Key && i.Item2 == 0);
if(xItem =! null) {
// YourTuple.Item1==item.Key && YourTuple.Item2==0 => true
}
}
注意:在上面的例子中,您有两个相同的字典键。
我已将代码修改为
foreach (var item in PathList)
{
Tuple<int, int> temp = new Tuple<int, int>(item.Key, 0);
//if (x.Equals(item.Key) && x[item.Key].Equals(0))
if (x.Contains<Tuple<int, int>>(temp))
{
string path1 = Path.Combine(GetDirectory(item.Value), item.Value);
File.Delete(path1);
}
}
我不知道这是不是一个好方法,但它解决了我的问题。。。