如何写等价但简洁的代码,也许使用Linq?
问题描述:
如何编写等价但简洁的代码,也许使用Linq? 此代码: var sectionAttributePairs = new List<SectionAttributePair>();
其中SectionAttributePair
是我自己的类如何写等价但简洁的代码,也许使用Linq?
entityAttributes
是AttributeMetadata[]
型
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);
}
}
}
答
是attributesBeyoundSection
一个List<T>
?然后你可以使用List.RemoveAll
var matchingAttributes = entityAttributes
.Where(attr => sectionAttributePairs
.Any(pair => pair.Attribute.Contains(attr.LogicalName)));
attributesBeyoundSection.RemoveAll(matchingAttributes.Contains);
注意的是,类必须要么重写Equals
和GetHashCode
或实施IEquatable<T>
(最好是两者总是)。否则Contains
只会比较参考。
+0
是的,它是'List
您自己的任何尝试? –
不知道*任何*的数据类型,这是不可能回答的。请写一个[mcve]。 – nvoigt
请给我们提供更多关于代码的信息......像变量的类型 – Wndrr