var myArray = S.Select(x => new [] { x.A, x.B })
.SelectMany(x => x)
.Where(x=> !string.IsNullOrEmpty(x))
.Distinct()
.ToArray();
Au-dessus ne fonctionne que si la contrainte unique est sur la collection résultant - si vous avez besoin d'une contrainte unique sur l'ensemble des A suivantes serait de son et B travailler:
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();
@Joey: Oui, mis à jour - hypothèse est unique est nécessaire sur les A et B n'est pas sur la collection qui en résulte, autrement première approche serait mieux – BrokenGlass
Pour mémoire, 'As.Concat (Bs)' serait faire la même chose que le 'SelectMany' –
@Claus Jørgensen: Doh! Et c'est beaucoup plus simple et lisible, édité cela dans. – BrokenGlass