我有一个元组<Tuple<int, int>>
x的列表,因为我得到键和值为(45345,1),(54645,0),(45345,0)
我有一个Dictionary < int, string > PathList
因为我得到了关键和价值(45345,asdfsd234egsgdfgs56345),(54645,0dfsd234egsgdfgs563456),(45345,0dfsd234egsgdfgs56345234)
我正在尝试
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,然后在条件内输入...我现在正在做什么,在任何条件下我都无法进入如果声明。
如何检查我的情况?
让我解释一下:check this qus这是我正在返回一个元组列表,我在ascx页面中得到(54356,0),(64643,0),(34365,1)拥有元组<Tuple<int, int>>
x的列表,在这个xi中获取列表的所有返回值,现在在同一个ascx页面中我有Dictionary < int, string > PathList
,因为我正在添加值ImgPathList.Add(54356,456dfhgdfg6575dfghdf) ;所以我得到了两个不同的列表,一个是x,另一个是Pathlist。
现在我想检查一下。如果pathlist有id和54356并且x有54356和0则输入if语句,否则显示lable msg作为文件无法删除
答案 0 :(得分:2)
我正在试图理解这个问题,但听起来我们有,比如说:
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"
}
}
但是,我不能充分理解你给出的例子,所以我不能肯定地说。
答案 1 :(得分:0)
将断点放在条件上,循环直到你得到一个应该输入if语句的值,然后使用&#34; Watch&#34;看看表达式的哪个部分返回false。调试窗口。
答案 2 :(得分:0)
也许这有用: 在我的项目中,我有一本字典:
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功能对我来说非常合适。也许你应该尝试类似的东西。
答案 3 :(得分:0)
如果你想检查字典的密钥为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
}
}
注意:在上面的示例中,您有两个相同的字典键。
答案 4 :(得分:0)
我已将代码修改为
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);
}
}
我不知道这是一个好方法,但它解决了我的问题......