我有这个功能,我想在#数据#中获得独特的价值。但是我的问题是,如果有两个具有相同字符的值,但一个是上位而一个是下位(即喜剧和喜剧),则它在我的数据中仍然同时具有喜剧和喜剧的价值。因此,当我绑定到数据时...会同时显示两者。

我的职能是:

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# - 如何获得大写和小写的独特值(value)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20837488/

10-12 02:27