2017-10-13 51 views
-4

如何編寫等價但簡潔的代碼,也許使用Linq? 此代碼: var sectionAttributePairs = new List<SectionAttributePair>(); 其中SectionAttributePair是我自己的類如何寫等價但簡潔的代碼,也許使用Linq?

entityAttributesAttributeMetadata[]

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

您自己的任何嘗試? –

+1

不知道*任何*的數據類型,這是不可能回答的。請寫一個[mcve]。 – nvoigt

+1

請給我們提供更多關於代碼的信息......像變量的類型 – Wndrr

回答

2

attributesBeyoundSection一個List<T>?然後你可以使用List.RemoveAll

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

attributesBeyoundSection.RemoveAll(matchingAttributes.Contains); 

注意的是,類必須要麼重寫EqualsGetHashCode或實施IEquatable<T>(最好是兩者總是)。否則Contains只會比較參考。

+0

是的,它是'List attributesBeyoundSection = entityAttributes.ToList();' – Renar