结构S有2个字符串字段:A和B.
我想将一个S数组转换为字符串数组,包含所有非空的唯一As和Bs。最有效的方法是什么?
此致
答案 0 :(得分:14)
var myArray = S.Select( x => new [] { x.A, x.B })
.SelectMany( x => x)
.Where( x=> !string.IsNullOrEmpty(x))
.Distinct()
.ToArray();
只有在结果集合上有唯一约束时,上面才有效 - 如果你需要对A和B的集合有一个唯一约束,那么以下就可以了:
var As = S.Select(x => x.A)
.Where( x=> !string.IsNullOrEmpty(x))
.Distinct();
var Bs = S.Select(x => x.B)
.Where( x=> !string.IsNullOrEmpty(x))
.Distinct();
var myArray = new [] {As,Bs} .SelectMany(x => x)。ToArray();
var myArray = As.Concat(Bs).ToArray();