在C#中通过键列表获取字典值属性的列表
解决方案
你可以用LINQ快速实现这个需求,代码简洁又直观:
var assetNames = selectedAssetGuidList .Select(guid => assetDict[guid].Name) .ToList();
解释
Select方法会遍历selectedAssetGuidList里的每一个Guid- 对每个Guid,直接从
assetDict中取出对应的Asset实例,再获取它的Name属性 - 最后用
ToList()把结果转换成List<string>(假设Name是字符串类型)
如果担心实际场景中selectedAssetGuidList里可能存在不在assetDict中的Guid(虽然你说它是子集,但防一手总是好的),可以用两种方式避免抛出KeyNotFoundException:
方式一:传统循环+TryGetValue
var assetNames = new List<string>(); foreach (var guid in selectedAssetGuidList) { if (assetDict.TryGetValue(guid, out var asset)) { assetNames.Add(asset.Name); } // 可选:这里可以加个else分支处理找不到的情况,比如记录日志 }
方式二:LINQ过滤有效项
var assetNames = selectedAssetGuidList .Where(guid => assetDict.ContainsKey(guid)) .Select(guid => assetDict[guid].Name) .ToList();
这种写法会自动过滤掉不在字典里的Guid,只保留能找到对应Asset的项。
内容的提问来源于stack exchange,提问作者Rik
相关产品推荐
相关产品推荐

