【问题标题】:Getting Keys and Values from IEnumerable<Dictionary<string, object>>从 IEnumerable<Dictionary<string, object>> 获取键和值
【发布时间】:2012-09-14 12:56:11
【问题描述】:

我有一个 IEnumerable &lt; Dictionary &lt; string, object &gt; &gt; 对象。

我想在一个数组中获取“aaavalue”“bbbvalue”“cccvalue”“dddvalue”。

样本数据:

IEnumerable<Dictionary<string, object>> testData = new IEnumerable<Dictionary<string, object>>();

/* Values in testData will be like
   [0] - 
         aaa - aaaValue   (Key, Value)
         bbb - bbbValue
         ccc - cccValue
         ddd - dddValue  
   [1] - 
         aaa - aaaValue   (Key, Value)
         bbb - bbbValue
         ccc - cccValue
         ddd - dddValue  

    and so on */

我知道可以使用反射或 LINQ。但我无法弥补。

请帮忙..

答案:

IEnumerable<Dictionary<string, object>> enumerable = testData as List<Dictionary<string, object>> ?? testData .ToList();
foreach (Dictionary<string, object> objects in enumerable)
{
    IEnumerable<object> values = objects.Select(x => x.Value); // To get the values.
    IEnumerable<string> keys = objects.Select(x => x.Key); // To get the keys.
}

【问题讨论】:

  • “获取值”是什么意思?预期的结果是什么?
  • @SergRogovtsev 我想在数组中获取“aaavalue”“bbbvalue”“cccvalue”“dddvalue”。

标签: c# linq .net-4.0 dictionary system.reflection


【解决方案1】:

尝试:

IEnumerable<object> values = testData.SelectMany(x => x.Values);

【讨论】:

  • 您的代码正在运行。但我想获得所有行。您的代码仅适用于一行。
  • “行”和“一行”是什么意思?
  • 我拥有的对象是 Enumerable 类型。您的代码只是给了我 testData[0] 的值。我想获取 testData 的所有值
  • @RameshDurai 用其他数据检查它,因为第一项的值与第二项的值相同!!!
  • 最后应该有 8 个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2018-04-27
相关资源
最近更新 更多