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)
您可以使用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)
归档时间: |
|
查看次数: |
2036 次 |
最近记录: |