如何使用LINQ Lambda组合多个列表

3

我有两个列表:

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]},
....}



}

我该如何开始做这件事?

2
你能提供一个真实的样例输入,并告诉我们你期望从中得到什么输出吗? - nlawalker
说实话,这只是一个简单的数字和字符串(混合)列表。我现在无法访问它,但明天我可以提供它。 - Caesar Tex
1
请添加编译器可以接受的代码。请展示样例输入的样例输出。 - NetMage
我不知道该如何解决这个问题。我已经提供了我目前所拥有的。 - Caesar Tex
@CaesarTex - 你的问题需要包含真实的 C# 代码,而不是虚构的 list1 = [a,b,c,4] - Enigmativity
2个回答

0
你需要使用Zip Linq方法,可以考虑以下示例:
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..然后使用List()来创建这些列表。 - Caesar Tex
在这种情况下,您能否使用适当的简化示例更新问题? - Kirill Polishchuk
我已经添加了一些关于列表的信息。 - Caesar Tex
1
@CaesarTex - 没有var类型 - 它只是一个真实类型的语法糖。 - Enigmativity

0

你的代码没问题,只需要进行一些小修补:

            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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接