LINQ选择非空字符串

时间:2011-07-31 22:22:54

标签: c# linq

结构S有2个字符串字段:A和B.

我想将一个S数组转换为字符串数组,包含所有非空的唯一As和Bs。最有效的方法是什么?

此致

1 个答案:

答案 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();