我有一个字典对象如下:
Dictionary<String, List<Component>> dicCountries = new Dictionary<string, List<Component>>();
现在dicCountries是根据区域 ID 分组的,所以我想List<Component>
在传递区域 ID 时获取所有信息。
是否可以使用 Linq 或者我们是否需要使用 C# 代码来阅读它。
请推荐!!
var result = dicCountries.FirstOrDefault(x => x.Key == regionID).Value;
或者
var result = (from x in dicCountries
where x.Key == regionID
select x.Value).FirstOrDefault();
个人觉得第一个比较干净。顺便说一句,Linq 或没有 Linq .. 都是 C#
更新:
实际上,在使用时FirstOrDefault
,它可能会返回 a NULL
,因此您应该先检查代码。所以:
var result = dicCountries.FirstOrDefault(x => x.Key == regionID);
List<Component> components = null;
if (result != null)
{
components = result.Value;
}
更新 2:
我只记得..KeyValuePair<TKey, TValue>
不能与 null 进行比较,您需要像这样检查:
if (!result.Equals(default(KeyValuePair<string, List<Component>>)))
这只是证明......有时LINQ不是最干净的解决方案。在大多数情况下是这样,但在这种情况下不是......所以选择更简单的解决方案:
List<Component>() list;
if (dicCountries.ContainsKey(regionID))
{
list = dicCountries[regionID];
}