0

我有一个字典对象如下:

Dictionary<String, List<Component>> dicCountries = new Dictionary<string, List<Component>>();

现在dicCountries是根据区域 ID 分组的,所以我想List<Component>在传递区域 ID 时获取所有信息。

是否可以使用 Linq 或者我们是否需要使用 C# 代码来阅读它。

请推荐!!

4

1 回答 1

3
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];
}
于 2013-04-17T05:03:27.177 回答