2010-01-25 4 views
2

J'ai un tableau de chaînes Array1 et un tableau de chaînes A2. Je veux les combiner dans un troisième tableau A3 mais en excluant les valeurs en double. Est-ce que cela peut être fait à travers des expressions lambda ou seulement en itérant à travers le tableau et en vérifiant array.Contains()?Combinaison de chaînes avec une expression lambda

Répondre

0

Vous pouvez faire la

suivante
Dim newArray = array1.Union(array2).Distinct().ToArray() 

Cela nécessite Visual Studio 2008 ou plus (VB.Net 9.0).

+0

Vous devrez en plus besoin d'une référence (pas sûr si elle est appelée même en VB, j'utilise C#) à LINQ. – BarrettJ

+0

@BarretJ, en 2008, il est ajouté en tant qu'importation au niveau du projet, donc il devrait déjà être là – JaredPar

+1

Y a-t-il seulement deux surcharges à Distinct()? Pas de paramètres et 1 qui prend IEqualityComparer –

1
array1.Union(array2).Distinct().ToArray(); 
0
public static Expression<Func<T, TResult>> And<T, TResult>(this Expression<Func<T, TResult>> expr1, Expression<Func<T, TResult>> expr2) 
    { 
     var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); 
     return Expression.Lambda<Func<T, TResult>>(Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters); 
    } 

    public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2) 
    { 
     var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); 
     return Expression.Lambda<Func<T, bool>>(Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters); 
    }