如何拼接对象列表中的字段

16 浏览
0 Comments

如何拼接对象列表中的字段

我有一个包含String[]字段的对象列表。列表中的对象数量大于8000个。我需要从这个列表中获取所有字段的String[]值。我可以使用循环来完成这个任务。但是我可以用LINQ来做吗(更简洁和高效)?

List productInfos = 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来完成这个任务吗?

0
0 Comments

如何在对象列表中连接字段

问题出现的原因:需要将对象列表中的某个字段进行连接。

解决方法:使用SelectMany方法可以实现这个功能。具体代码如下:

List res = productInfos.SelectMany(x => x.tags)
    .Distinct()
    .ToList();

以上代码将会连接对象列表productInfos中每个对象的tags字段,并去除重复的元素,最后将结果存储在res列表中。

0
0 Comments

问题的出现原因:需要将一个对象列表中的某个字段拼接起来。

解决方法:使用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/)

0