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