遍历C#中的集合

我有以下类创建:

[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; } }

我如何遍历选项让所有的varNumbers?

--------------解决方案-------------

方法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.
}

分类:C# 时间:2012-01-01 人气:1
本文关键词:
分享到:

相关文章

  • 迭代在JavaScript中数组集合 2012-10-25

    我在使用迭代的麻烦和数组的集合(数组的数组,我猜)中获得的值 我希望下面的代码会显示一个警告显示依次在每个数组中的3个值(例如,"婴幼儿","0",然后选择"2"),但该警报只是显示为"0","不确定",未定义" . 我在想什么? 声明数组: var ageGroups = [["infant", 0, 2], ["child", 3, 18], [&quo

  • Silverlight 3中的集合绑定到当前项目 2012-07-07

    绑定语法{Binding /}工作在WPF,但不会在Silverlight 3 在所有的工作: <ContentControl Content="{Binding MyCollection}"> <ContentControl.ContentTemplate> <DataTemplate> <ContentControl Content="{Binding /}" /> </DataTemplate> &l

  • NHibernate的条件查询在内存中的集合实体 2012-08-31

    我想一个标准的查询应用到内存中集合的实体,而不是在数据库中. 这可能吗? 有这样的LINQ标准API的工作? 或者,转换条件查询到LINQ查询. 谢谢! --------------解决方案------------- 我不相信你可以用标准来对内存中的集合查询和来想想它似乎并没有太大的意义. 如果我理解正确的一切,你已经对查询数据库. 我建议要么调整您的原始查询(哪种方法你选择),包括所有的过滤器. 或者你可以使用LINQ(如你所说),以优化您的结果. 此外,什么是你的推理想从内存到查询? 这听起

  • XSLT 1.0:遍历字符串中的字符 2012-10-20

    我需要的字符遍历字符串中构建XML结构. 目前,我这样做: <xsl:template name="verticalize"> <xsl:param name="text">Some text</xsl:param> <xsl:for-each select="tokenize(replace(replace($text,'(.)','$1\\n'),'\\n$',''),'\\n')"> <

  • “系统。” 在MongoDB中一个集合名称 2012-10-26

    我只是发现了MongoDB中表现出的怪异行为. 显然,任何集合名称以字符串"系统". 在它的任何地方只是无法正常工作. 更糟糕的是,它甚至不会告诉你什么是错的! 这真的更多的是好奇的问题,但没有任何人有任何想法,为什么会发生这种情况? 难道地方记录? 我的假设是,它使用""制度.*"的集合来存储内部的东西(如索引),不希望你跟他们搞乱,但是这似乎并不像正确的行为给我. --------------解决方案------------- 你是正确的"的

  • 遍历JavaScript中的“历史”? 2013-06-19

    有没有一种方法来遍历JavaScript中的"历史"对象发现,在历史上的一个特定的页面? --------------解决方案------------- 安全理由 - 不,你不能倾倒浏览器的历史记录(用JavaScript) 我的意思是,你不能这样做 for(i=0;i<window.history.length; i++) { alert(window.history[i]); } 但是我并没有很好的解释为什么history.go(n);就可以了 不,因为这会你基本上刺探任何人

  • 测试内存中的集合对NHibernate的限制 2013-07-03

    我的应用程序允许用户运行报表之前做深度过滤器编辑一些漂亮的. 我有一个整体的框架,以动态地生成基于这些过滤器NHibernate的限制,运行查询. 我有一个情况我有一组为我要拉记录的限制,而另一组的限制,该集合应受到特殊处理内识别记录. 目前我能做的最好的是从数据库中提取两组,和我处理的第一套,我必须检查第二组包含看看我是否需要申请我的特殊处理的元素. 这里的明显的问题是,我必须打两次数据库. 这将是好得多,如果我能对查询有限制的实体而无需访问数据库. 是否有NHibernate的这样做的任何设

  • 如何遍历目录中的所有图像文件? 2013-09-12

    我的应用程序使用iTunes的文件共享. 用户可以将文件添加到Documents目录. 我必须阅读这些文件,但要确保他们只是图像,而不是文本文件或其他"垃圾". 我怎么能遍历目录中的文件,并只承认那些照片? 我认为我必须做它在某种程度上是这样的: NSMutableArray *retval = [NSMutableArray array]; NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirPath

  • 的Java遍历图像中的像素? 2014-01-15

    嗨我试图找到一种方法,使我的2D Java游戏地图,而且我认为一个想法中,我将通过图像的每个像素,并取决于什么颜色的像素循环是这将是瓷砖画画. 例如 现在的问题是,是否有可能循环通过图像的像素? 如果又如何? 能否请您用一些有用的链接或代​​码片段供我吗? 谢谢你给我任何帮助. --------------解决方案------------- 需要注意的是,如果你想遍历图像中的所有像素,请务必使通过外循环y坐标,像这样: for (int y = 0; y < image.getHeight();

  • 我该如何去有关文件的遍历目录中的,责令根据红宝石最后编辑时间呢? 2014-05-11

    我遍历文件中的红宝石,即给定目录: Dir.each 我想在排序顺序中的文件遍历 - 通过最后的编辑日期升序或降序. 什么是编写代码来做到这一点,红宝石最短的方法是什么? --------------解决方案------------- 这将升序进行排序: Dir['*'].sort_by{|f| File.mtime(f) } 如果你希望他们按降序排列,加reverse!这似乎是最快的方法: Dir['*'].sort_by{|f| File.mtime(f) }.reverse!

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.046 (s). 10 q(s)