C#-组合具有相同属性的多个LINQ集合
本文关键字:LINQ 集合 属性 组合 C#- | 更新日期: 2023-09-27 17:58:10
也许是深夜了,但我被困在这里了。我正在尝试将具有相同属性的多个列表合并为一个列表。我以为林的工会会成功,但我错了。以下是我的一些列表的示例:
LIST1 (report names):
Date Name Title Product
02/01/13 Steve Hello World Report
02/05/13 Greg Howdy Report
LIST2 (song names):
Date Name Title Product
01/01/13 John Time Song
01/05/13 Bob Sorry Song
LIST3 (games names):
Date Name Title Product
12/01/12 Google Bike Race Game
12/05/12 Apple Temple Run Game
我的课很简单。以下是它的样子:
public class MyClass {
public DateTime Date { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Product { get; set; }
}
如果你想知道,我使用这个LINQ查询来获得上面的列表之一:
var finalList = Games
.Select (s => new MyClass {
Date = (System.DateTime) s.Games.Creation_date,
Name = s.Games.Last_name,
Title = string.Format("{0} (Report)", s.Game.Headline),
Product="Report"
})
;
到目前为止,这很容易,但我想将所有列表合并为1。所以,我的最终列表应该是:
Date Name Title Product
02/01/13 Steve Hello World Report
02/05/13 Greg Howdy Report
01/01/13 John Time Song
01/05/13 Bob Sorry Song
12/01/12 Google Bike Race Game
12/05/12 Apple Temple Run Game
我以为UNION命令就能做到:
var newList = List1.Union(List2).Union(List3);
但是我没有得到想要的输出。
Date Name Title Product
02/01/13 Steve Hello World Report
02/05/13 Greg Howdy Report
01/01/13 Bob Time Game
01/05/13 John Sorry Song
12/01/12 Google Bike Race Song
12/05/12 Apple Temple Run Game
你知道我在这里做错了什么吗?
尝试:
list1.Concat(list2).Concat(list3);
无论如何,您都不希望使用Union
(工作或不工作),因为它确实设置了并集。
您可以尝试使用AddRange命令,看起来应该类似于以下
var FullList = list1.AddRange(list2).AddRange(list3);
或者故障安全方式可能是
var FullList = list1.Concat(list2).Concat(list3).ToList(); //Personally i would use this
或者你也有
var FullList = new[] { list1, list2, list3 }.SelectMany(a => GetAllProducts(a)).ToList();