gpt4 book ai didi

c# - 如何使用 LINQ 将两个或多个集合合并为一个集合

转载 作者:太空狗 更新时间:2023-10-30 00:56:15 25 4
gpt4 key购买 nike

我有三个收藏

var col1 = new {Name1 = "Frank", ID1 = 123, ABC = "abc"};
var col2 = new {Name2 = "Harry", ID2 = 456, XYZ = "xyz"};
var col3 = new {Name3 = "Bob"};

我想创建第四个集合,将这三个集合组合在一起。

以三个集合为例,我希望第四个集合“看起来”像这样:

+===================+
| FirstName | Ident |
+===================+
| Frank | 123 |
+-------------------+
| Harry | 456 |
+-------------------+
| Bob | |
+-------------------+

我什至不知道这是否可行,但我正在尝试弄清楚是否可以使用 LINQ 通过将 col1、col2 和 col3 的字段映射到第四个集合的字段来合并表。

伪代码,希望能澄清我要解释的内容:

var col4 = from c1 in col1, c2 in col2, c3 in col3
select new {FirstName = (c1.Name1, c2.Name2, c3.Name3), Ident = (c1.ID1, c2.ID2);

如果可能,我该如何实现?

最佳答案

您可以使用 Linq Union。我伪造了初始化,因为您的示例实际上没有集合,但仍然保留元素的匿名性质,因为我认为这就是您的意图。

static void Main(string[] args) {
var dummys = new List<int>(); dummys.Add(1);
var col1 = from dummy in dummys
select new { Name1 = "Frank", ID1 = 123, ABC = "abc" };
var col2 = from dummy in dummys
select new { Name2 = "Harry", ID2 = 456, XYZ = "xyz" };
var col3 = from dummy in dummys
select new { Name3 = "Bob" };

var col4 = col1.Select(c=> new { FirstName=c.Name1, Ident=new Nullable<int>(c.ID1)})
.Union(col2.Select(c=> new { FirstName=c.Name2, Ident=new Nullable<int>(c.ID2)}))
.Union(col3.Select(c=> new { FirstName=c.Name3, Ident=new Nullable<int>()}));

foreach (var c in col4) {
Console.WriteLine(c);
}
Console.ReadKey();
}

关于c# - 如何使用 LINQ 将两个或多个集合合并为一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com