如何拼接对象列表中的字段
如何拼接对象列表中的字段
我有一个包含String[]字段的对象列表。列表中的对象数量大于8000个。我需要从这个列表中获取所有字段的String[]值。我可以使用循环来完成这个任务。但是我可以用LINQ来做吗(更简洁和高效)?
ListproductInfos = new List (); ProductInfo f1 = new ProductInfo(); f1.tags = new[] { "A","B","T","U"}; ProductInfo f2 = new ProductInfo(); f2.tags = new[] { "C","D","M","U" }; productInfos.Add(f1); productInfos.Add(f2); List res = new List (); productInfos.ForEach(f => { foreach (String tag in f.tags) { res.Add(tag); } }); res = res.Distinct().ToList(); class ProductInfo { public String[] tags; }
但是我可以用LINQ来完成这个任务吗?
问题的出现原因:需要将一个对象列表中的某个字段拼接起来。
解决方法:使用LINQ中的SelectMany方法来实现拼接。具体代码如下:
var res = productInfos .SelectMany(p => p.tags) .Distinct() .ToList();
相关资料:
- [官方文档](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/)
- [更多官方文档](https://learn.microsoft.com/en-us/dotnet/csharp/linq/)
- [《LINQ Pocket Reference》 by Joseph Albahari, Ben Albahari](https://www.oreilly.com/library/view/linq-pocket-reference/9780596519247/)