c# 想一句话把 List<List<string>>的元素合并成List<string>


            Liststring>> yssj = new Liststring>> { new List<string> { "C01", "C51", "C53" }, new List<string> { "C01", "C67", "C65" } };
            //要把list 里的list元素合并到一个list里

            var jsj = yssj.Select(s => s.Select(s => s)).ToList();//不太行的方法

            List<string> xsj = new();
            foreach (var item in yssj)
            {
                xsj = xsj.Union(item).ToList();//正常的方法
            }

            return xsj.ToList();// 要的结果就是合并后的数据 List { "C01", "C51", "C53" ,"C67", "C65"}

如上所示

有一个List类型的值为

new Liststring>> { new List<string> { "C01", "C51", "C53" }, new List<string> { "C01", "C67", "C65" } }

想把最里面的元素拿出来合并成

new List<string> { "C01", "C51", "C53" ,"C67", "C65"}

以前的做法都是foreach循环Union。现在觉得foreach代码有点多,就想着能不能一句话搞定。

然后就尝试了

 var jsj = yssj.Select(s => s.Select(s => s)).ToList();//不太行的方法

出来的结果却是这样的

img

可以使用 SelectMany 函数:

var lists = new List<List<string>> {new List<string> {"C01", "C51", "C53"}, new List<string> {"C01", "C67", "C65"}};
            
List<string> result = lists.SelectMany(x => x).ToList();
var jsj = yssj.Aggregate(new List<string>(), (res, item) => res.Union(item).ToList());

img