我有一个问题,我试图弄清楚对数组进行分组后如何打印出值。
我已经弄清楚了如何打印出“对象”的键,但是如何打印出值呢?
我知道应该看起来像{key:value}:{1:[1],2:[2,2],3:[3,3],4:[4]}。
但是我只能在下面的代码中打印出键,=> 1、2、3、4 任何建议都将不胜感激。
public static void figureModeOut(int[] source)
{
int[] numbers1 = { 1, 2, 3, 3, 2, 4 };
var step1 = numbers1.GroupBy(x => x);
foreach (var item in step1)
{
Console.WriteLine("{0} -", item.Key);
}
}
答案 0 :(得分:1)
返回的IGrouping<TKey, TElement>
(即item
中的每个step1
)本身就是IEnumerable<TElement>
,其中包含任何给定TKey
的值序列,因此只需使用在每个string.Join()
上使用item
来打印其值:
foreach (var item in step1)
{
Console.WriteLine("{0} - {1}", item.Key, string.Join(",", item));
}
输出:
1-1
2-2,2
3-3,3
4-4
答案 1 :(得分:0)
值是项目本身。 只需使用
item.ToList()
然后您将看到要素。
您可以对商品执行任何linq操作
这是完整的代码:
public static void figureModeOut(int[] source)
{
int[] numbers1 = { 1, 2, 3, 3, 2, 4 };
var step1 = numbers1.GroupBy(x => x);
foreach (var item in step1)
{
foreach (var element in item)
{
Console.WriteLine("{0} - {1}", item.Key, element);
}
}
}
答案 2 :(得分:0)
与其他人一样,我建议您做同样的事情,除非我确保您不需要使用item.ToList()
或item.Select(...)
(对于string.Join
)。
IGrouping<TKey, TElement>
产生的 GroupBy
产生其中具有IEnumerable<TElement>
属性的TKey Key
。因此,该项目本身是可迭代的。您可以在string.Join(sep, collection)
中或以下方式使用它。
另外,要查看调试结果,您无需进行转换。
我还要补充一点,ToList
或ToAnyOther可变集合不是您想要的,因为它是关于违法概念恕我直言的。
好吧,只需遍历您拥有的物品即可。