C#:如何使用 LINQ 或 LAMBDA 表达式操作 List<String>

标签 c# linq lambda

我有一个 List<String>喜欢

 List<String> MyList=new List<String>
    {
    "101010",
    "000000",
    "111000"
    };

我需要用“MyList”创建一个新列表(List<String>)。因此“MyList”中的行成为新列表中的列,而列成为行

所以结果会是这样

 {
    "101",
    "001",
    "101",
    "000",
    "100",
    "000"
  }

现在我正在使用 nested for循环执行此操作。

有没有办法使用 LINQ 来做到这一点?或 LAMBDA表达

最佳答案

这是一个 LINQPad执行此操作的脚本:

void Main()
{
    List<String> MyList = new List<String>
    {
        "101010",
        "000000",
        "111000"
    };
    Transpose(MyList).ToList().Dump();
}

static IEnumerable<String> Transpose(IEnumerable<String> strings)
{
    return from i in Enumerable.Range(0, strings.First().Length)
           select new string((from s in strings select s[i]).ToArray());
}

输出:

101
001
101
000
100
000

关于C#:如何使用 LINQ 或 LAMBDA 表达式操作 List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3838168/

相关文章:

c# - 按多个键分组并忽略大小写

c# - 如何将带有对象的字典转换为该类型的列表?

python - 带有 lambda 的 min 是否总是返回 python 中的第一个值?

c# - ValueType 的动态表达式生成问题

c# - ASP.NET Core MVC 标记帮助器参数中的字符串文字

c# - PtrToStructure 抛出的参数异常

c# - ASP.NET 身份用户创建

c# - 如何在自引用 linq 中获取针对高度父级的极端叶节点

Linq GroupInto 选择器

C# 使用 lambda 表达式委托(delegate)逆变