我正在对元素列表进行排序:
var matchEle = listOfElements.Where(e => e.Properties().Any(p => p.Name.Contains("Key", Asking for IEqualityComparer))).First();
我通常直接使用StringComparer.OrdinalIgnoreCase或StringComparer.CurrentCultureIgnoreCase,但在调用Contains()时,它要求传入一个IEqualityComparer。我猜想这是因为数据结构/层次的原因。我看到了一个如何设置IEqualityComparer的示例,例如:
strEqualityComparer = new IEqualityComparer();
我需要定义一个用于 strEqualityComparer 类的类,但除此之外我不太确定。有人能帮我让我的 linq 语句忽略大小写并正常工作吗?请注意,以下是数据结构示例:
listOfElements = [element1, element2, etc..]
element1.Properties = ["Prop1", "Key1", "Prop2", "Key2", etc.]
如果任何属性的值包含关键词(在这种情况下为 "Key"),则需要提取通过过滤器的元素,因此它不能是.Equals或IndexOf。
string
和IEqualityComparer
的Contains
方法。由于它基于IEnumerable
,出于某种奇怪的原因,只有一个char
+IEqualityComparer
的重载。 - Gert Arnold