[英]Checking if my dictionary<int, list<int>> has an item in the list
我现在正在这样做:
foreach(..)
{
if(myDic.ContainsKey(car.ID) && myDic[car.ID].Contains(car.MfgID))
{
// do something
}
}
我想知道是否可以执行检查,但是请检查它是否不存在,然后继续。
我该怎么做? 使用|| 要么 &&?
我不能假设键/值在那里,所以我不希望它崩溃。
foreach(..)
{
if(!myDic.ContainsKey(car.ID) || !myDic[car.ID].Contains(car.MfgID))
{
continue;
}
// do something
}
如果您在“执行某些操作”时有逻辑, 则此方法很有用,因为它使用了字典的良好访问复杂性。 如果“做某事”只是选择值,那么整个循环只是一个过滤器,因此使用LINQ查询更为优雅。
如果您有可用的LINQ,则可以执行以下操作:
myDic.Any(kvp => kvp.Key == car.ID && kvp.Value.Contains(car.MfgID));
想通了,我会添加一点扩展,如果要过滤列表,可以执行以下操作:
var filteredDictionary = myDic.Where(kvp => kvp.Key == car.ID
&& kvp.Value.Contains(car.MfgID));
foreach(...)
{
... //Only enumerating over items that match both conditions.
}
另一个常用的方法是使用几个简单的保护子句 :
foreach (...)
{
if (!myDic.ContainsKey(car.ID))
continue;
if (!myDic[car.ID].Contains(car.MfgID))
continue;
// do something actually
}
(有时可以提高可读性)
您所拥有的都很好,如果左侧的左侧为假,则不会评估&&的右侧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.