2017-10-13 13 views
-4

Comment écrire le code équivalent mais laconique, peut-être en utilisant Linq ?? Ce code: var sectionAttributePairs = new List<SectionAttributePair>();SectionAttributePair est ma propre classeComment écrire dans le code équivalent mais laconique, peut-être en utilisant Linq?

entityAttributes est AttributeMetadata[] Type

List<AttributeMetadata> attributesBeyoundSection = entityAttributes.ToList(); 
foreach (var pair in sectionAttributePairs) 
{ 
    foreach (var attr in entityAttributes.ToList()) 
    { 
     if (pair.Attribute.Contains(attr.LogicalName)) 
     { 
      attributesBeyoundSection.Remove(attr); 
     } 
    } 
} 
+4

Une tentative de votre part? –

+1

Sans connaître * aucun * des types de données, il est impossible de répondre. S'il vous plaît écrire un [mcve]. – nvoigt

+1

Veuillez nous fournir plus d'informations sur le code ... comme les types de variables – Wndrr

Répondre

2

Est-attributesBeyoundSection un List<T>? Ensuite, vous pouvez utiliser List.RemoveAll

var matchingAttributes = entityAttributes 
    .Where(attr => sectionAttributePairs 
     .Any(pair => pair.Attribute.Contains(attr.LogicalName))); 

attributesBeyoundSection.RemoveAll(matchingAttributes.Contains); 

Notez que la classe doit soit passer outre Equals et GetHashCode ou mettre en œuvre IEquatable<T> (meilleure est à la fois toujours). Sinon, Contains ne ferait que comparer des références.

+0

oui, c'est 'List attributesBeyoundSection = entityAttributes.ToList();' – Renar