c# - 如何获得大写和小写的不同值?

标签 c# linq windows-phone distinct-values

我有这个功能,我想在#Data#中获得不同的值。但我的问题是,如果有两个具有相同字符的值,但一个是 Upper,一个是 Lower(即喜剧和喜剧),它在我的数据中仍然同时具有 Comedy 和 comedy 的值(value)。所以当我绑定(bind)到数据时......它显示了两者。

我的职能是:

public void LoadBookGenre(Book abc)
{
    var loadbook = from Book s in BookDB.Books where s.Genre == abc.Genre select s;
    BookAttribute.Clear();
    foreach (Book m in loadbook) BookAttribute.Add(m);
    List<Book> distinct = BookAttribute.GroupBy(a => a.Genre).Select(g => g.First()).ToList(); 
    Data.Clear(); 
    foreach (Book s in distinct) Data.Add(s);
}

最佳答案

您可以使用允许您指定不区分大小写的比较器的 GroupBy 重载:

List<Book> distinct = 
    BookAttribute.GroupBy(a => a.Genre, StringComparer.OrdinalIgnoreCase)
                 .Select(g => g.First())
                 .ToList();

根据您的情况,您还可以使用 Distinct:

List<string> distinctGenres = 
    BookAttribute.Select(a => a.Genre)
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .ToList();

编辑:您还需要更改初始查询中的相等性检查:

var loadbook = from Book s in BookDB.Books 
               where s.Genre.Equals(abc.Genre, StringComparison.OrdinalIgnoreCase)
               select s;

关于c# - 如何获得大写和小写的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20837488/

相关文章:

java - 是否可以在android中捕获屏幕截图并将其保存到统一的图库中

c# - LINQ LEFT JOIN 不适用于 NULL 值

c# - Nhibernate 转义 linq 查询中的特殊字符

c# - LINQ,SelectMany 有多种可能的结果

c# - 使用 bool 值绑定(bind)文本 block 的可见性不起作用

windows-phone-8 - 如何更改广告网络(在我的 Windows Phone 开发中心)关联的 pubCenter 帐号

c# - 禁止 web 应用程序下载 bootstrap 和 jquery

c# - Asp.Net Core 重定向到 Action 但不允许直接调用 Action ?

c# - ASP.NET MVC5 在 View 中的标签中显示异常错误消息可能吗?

c# - 如何获取设置为 'Auto' 的 Canvas 元素的宽度和高度?