在 C# 中循环访问集合
本文关键字:访问 集合 循环 | 更新日期: 2023-09-27 17:55:26
我创建了以下类:
[Serializable]
public class AppContext : IXmlSerializable {
public string reportType = string.Empty;
public string entityId = string.Empty;
// OPTIONS
public IDictionary<string, OPTIONS> dict_Options = new Dictionary<string, OPTIONS>();
// Advanced Options
public List<string> listAdvancedOptions = new List<string>();
public class OPTIONS {
public string subjectId = string.Empty;
public string varNumber = string.Empty;
}
}
如何遍历选项以获取所有变量号?
方法 1
foreach (KeyValuePair<string, AppContext.OPTIONS> kvp in appContext.dict_Options)
{
Console.WriteLine(kvp.Value.varNumber);
}
方法 2
foreach (AppContext.OPTIONS item in appContext.dict_Options.Values)
{
Console.WriteLine(item.varNumber);
}
方法 3
foreach (string item in appContext.dict_Options.Select(x => x.Value.varNumber))
{
Console.WriteLine(item);
}
一个Dictionary<TKey, TVal>
实现IEnumerable<KeyValuePair<TKey, TVal>>
,所以试试这个:
var varNumbers = dict_Options.Select(kvp=>kvp.Value.varNumber);
您还可以直接访问字典中值的 IEnumerable:
var varNumbers = dictOptions.Values.Select(v=>v.varNumber);
>OPTIONS
是一个不实现任何集合接口的类(比如IEnumerable
)。您无法迭代它。
您可以遍历字典 - dict_Options
:
foreach(var item in dict_Options)
{
// use item - say item.varNumber
}
注意:
在你的类中有公共字段是糟糕的设计 - 它违反了封装和信息隐藏,并且会使类难以发展。您应该使用私有字段和公共属性来公开它们。
如果你只想遍历所有的varNumbers,我可能会执行以下操作:
var dict_Options = new Dictionary<string, OPTIONS>();
foreach (var varNumber in dict_Options.Select(kvp => kvp.Value.varNumber))
{
// Your code.
}