c# - 对列表进行分组 - 寻找更好的方法

标签 c# .net linq

<分区>

我有一个类似的列表

var x = new List<string>{"A","B","C","D","E","F"};

我想像那样将它分组为 double

1-A

1-B

2-C

二维

3-E

三楼

我的解决方案是什么

        var result = new Dictionary<int, List<string>>();

        var sequence = 1;

        var groupList = new List<string>();

        for (var i = 0; i < x.Length ; i++)
        {
            groupList.Add(x[i]);

            if ((i + 1)%2 == 0)
            {
                result.Add(sequence, groupList);
                groupList = new List<string>();
                sequence++;
            }

        }

        return result;

我正在寻找替代(更好)的方法来获得相同的结果。

最佳答案

另一种方式:

    int numPairs = 3;
    char[] abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();         
    var dict = new Dictionary<int, char[]>();
    for (int i = 1, k=1; i <= numPairs && k<abc.Length; i++, k+=2)
    {
        dict.Add(i, new char[] { abc[k - 1], abc[k] });
    }
    return dict;

关于c# - 对列表进行分组 - 寻找更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21878092/

相关文章:

c# - 在文本框中输入非数字时更改默认错误消息需要整数

c# - 我的 ListView 不会输出,是否需要回发?

c# - 如何在 C# 中将代码块(不是完整方法)作为参数传递?

c# - 让表单重新检查 ModelView

.net - 在.Net中使用Scala有什么好处?

.net - 修改 PropertyGrid 中的结构属性

c# - 尝试反序列化 json 时无法在 JsonConvert 之后实现 Iterator 设计模式

c# - IList-LINQ进行过滤和排序

c# - 在 LINQ 中使用两个条件获取单个记录

c# - 使用 LINQ 解析内部双字典?