gpt4 book ai didi

c# - 按多个键分组并忽略大小写

转载 作者:行者123 更新时间:2023-11-30 20:48:50 27 4
gpt4 key购买 nike

当我尝试执行以下操作时,

collection.GroupBy(item => new
{
item.Item1,
item.Item2,
item.Item3,
item.Item4
}, StringComparer.CurrentCultureIgnoreCase)

我收到无法从用法中推断参数类型的错误,并尝试明确指定类型参数。

正确的语法是什么?

最佳答案

顾名思义,StringComparer 用于比较简单的字符串,而不是匿名类型。

来自 StringComparer 上的 MSDN 页面:

Represents a string comparison operation that uses specific case and culture-based or ordinal comparison rules.

要比较你的类,你可以创建自己的比较器:

public class CustomComparer : IEqualityComparer<SomeClass>
{
public bool Equals(SomeClass x, SomeClass y)
{
return String.Equals(x.Item1, y.Item1, StringComparison.CurrentCultureIgnoreCase)
&& String.Equals(x.Item2, y.Item2, StringComparison.CurrentCultureIgnoreCase)
&& String.Equals(x.Item3, y.Item3, StringComparison.CurrentCultureIgnoreCase);
}

public int GetHashCode(SomeClass obj)
{
return string.Concat(obj.Item1.ToLower(),
obj.Item2.ToLower(),
obj.Item3.ToLower()).GetHashCode();
}
}

并在 GroupBy 中使用它:

var collection = new List<SomeClass>();

// populate collection

collection.GroupBy(item => item, new CustomComparer());

这应该可行,尽管您可能需要尝试一下。

关于c# - 按多个键分组并忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24174705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com