如何获得大小写的明显价值?

Edd*_*Duy 1 c# linq distinct-values windows-phone

我有这个功能,我希望在#Data#中获得独特的价值.但我的问题是,如果有两个具有相同字符的值,但一个是Upper,一个是Lower(即Comedy和喜剧),它仍然在我的数据中同时具有值​​Comedy和喜剧.因此,当我绑定到数据时...它显示两者.

我的功能是:

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);
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*las 5

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

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

根据您的方案,您也可以使用Distinct:

List<string> distinctGenres = 
    BookAttribute.Select(a => a.Genre)
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .ToList();
Run Code Online (Sandbox Code Playgroud)

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

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