2017-10-13 50 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