C# 如何在Linq查询中为多个列忽略group by中的大小写

C# 如何在Linq查询中为多个列忽略group by中的大小写,c#,linq,C#,Linq,请在下面找到为获取数据而编写的示例查询,我希望通过忽略单词的大小写来对GroupName进行分组 我知道以下选项,不想使用这些提供特定输出格式的选项。寻找保留原来的情况 1.降低 2.TO Lower将使用小写或大写 var GroupName = (from p in FilterList where p.GroupName != null group p by new { month = p.ReportedDateTime

请在下面找到为获取数据而编写的示例查询,我希望通过忽略单词的大小写来对GroupName进行分组

我知道以下选项,不想使用这些提供特定输出格式的选项。寻找保留原来的情况

1.降低 2.TO Lower将使用小写或大写

var GroupName = (from p in FilterList
                 where p.GroupName != null
                 group p by new { month = p.ReportedDateTime.Month, year = p.ReportedDateTime.Year, GroupName =p.GroupName  } into d
                 select new
                 {
                     dt = string.Format("{0}/{1}", d.Key.month, d.Key.year),
                         month = d.Key.month,
                         monthName = new DateTime(d.Key.year, d.Key.month, 1).ToString("MMM", CultureInfo.InvariantCulture),
                         count = d.Count(),
                         GroupName = d.Key.GroupName 
                 }).OrderByDescending(g => g.count)
                   .ThenBy(g => g.GroupName).Take(20);
如何在上面的GroupName列查询中使用StringComparer.InvariantCultureIgnoreCase。

您可以在分组键上使用ToLower并从组成员之一检索原始案例。这与所有组成员的原始情况不同,但这意味着希望组忽略情况,而不是将所有组成员保留在答案中

var GroupName = (from p in FilterList
                 where p.GroupName != null
                 group p by new { month = p.ReportedDateTime.Month, year = p.ReportedDateTime.Year, GroupName = p.GroupName.ToLower()  } into d
                 select new {
                     dt = string.Format("{0}/{1}", d.Key.month, d.Key.year),
                         month = d.Key.month,
                         monthName = new DateTime(d.Key.year, d.Key.month, 1).ToString("MMM", CultureInfo.InvariantCulture),
                         count = d.Count(),
                         GroupName = d.First().GroupName
                 }).OrderByDescending(g => g.count)
                   .ThenBy(g => g.GroupName).Take(20);

字符串上的=运算符始终区分大小写。你试过使用String.Equals函数吗?它确实有一个比较器对象的重载?Nostromo,我实际上是在寻找对字符串的分组,因此Equals不会进行训练,那么Byg=>g.GroupName.ToLowerpm100怎么样,我不想使用ToLower,因为我的完整输出将以小写形式显示,我还想保留输入数据的大小写。按ToLower分组会将键减少为小写,但对于每个iGroup,First.GroupName仍将保留原始大小写。太好了,这在某些情况下有效,但在某些情况下不起作用。请解释这些情况,或者问另一个问题?Netmage-我在某个情况下做错了什么,现在所有情况下都有效。谢谢