【问题标题】:How to combine multiple lists using LINQ lambda如何使用 LINQ lambda 组合多个列表
【发布时间】:2019-02-26 22:14:14
【问题描述】:

我有两个列表:

list1 = [a,b,c,4]
list2 = [1,23,5,6]

现在我需要使用 linq lambda 创建一个匿名对象。

类似的东西。

list1 = DataTable.AsEnumerable().toList();
list2 = DataTable.AsEnumerable().toList();

var result = list1.Where(x => x.Field<int>(1) == 2018).Select(x => new[] {
new {x = "XYZ", y = x[0], z = list2[0]},
....}



}

我该怎么做?

【问题讨论】:

  • 你能提供一个真实的样本输入,以及你期望从中得到的输出吗?
  • 老实说,这只是一个简单的数字和字符串列表(混合)。我无法使用自动取款机,但我明天可以提供。
  • 请添加编译器可以接受的代码。请显示来自示例输入的示例输出。
  • ^ 我不知道如何解决这个问题。到目前为止,我已经给出了我所拥有的。
  • @CaesarTex - 您的问题需要包含真正的 C# 代码 - 而不是编造的 list1 = [a,b,c,4]

标签: c# linq


【解决方案1】:

你需要ZipLinq 方法,考虑这个例子:

int[] list1 = {1, 2, 3};
string[] list2 = {"a", "b", "c"};

var result = list1.Zip(list2, (i, s) => new {y = i, z = i});

【讨论】:

  • 我得到了 'Enumerable.Zip' 的类型参数...无法从用法中推断出来。列表是 var 类型并包含多种类型。我正在使用 datatable.AsEnumerable..then 到 List() 来创建这些列表。
  • 在这种情况下,您能否用一个适当的简化示例更新问题?
  • 我添加了一些关于列表的信息
  • @CaesarTex - 没有 var 类型 - 它只是真实类型的语法糖。
【解决方案2】:

您的代码很好,只是需要一些小修复:

            string [] list1 = { "a", "b", "c", "4" };
            int[] list2 = { 1, 23, 5, 6 };
            object[] list3 = { "test", DateTime.Now, 56 };

            var result = list1.Where(x => x == "a").Select(x =>
                  new { x = "XYZ", y = x[0], z = list2[0], t = list3[1] }).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2017-06-09
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    相关资源
    最近更新 更多