我列出了与某个国家/地区相关的匹配项。现在在迭代中我为每个匹配分配这个国家,例如:
Team A = Italy
Team B = Italy
我在这样的GridView中绑定这些匹配:
<Expander IsExpanded="True" Background="#4F4F4F">
<Expander.Header>
<StackPanel Orientation="Horizontal" Height="22">
<TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="White" FontSize="22" VerticalAlignment="Bottom" />
<TextBlock Text="{Binding ItemCount}" FontSize="22" Foreground="Orange" FontWeight="Bold" FontStyle="Italic" Margin="10,0,0,0" VerticalAlignment="Bottom" />
<TextBlock Text=" match" FontSize="22" Foreground="White" FontStyle="Italic" VerticalAlignment="Bottom" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
无论如何,名称是国家名称,问题是ItemCount抓住意大利两次。我需要在xaml中防止这种情况而不显示重复的项目,这可能吗?
答案 0 :(得分:1)
我将继续并假设您的某些类型的通用List
标记为Team
。
试试这个:
List<Team> teams = new List<Team>
{
new Team {Name = "Italy"},
new Team {Name = "France"},
new Team {Name = "Italy"}
};
var distinctList = teams.Select(team => team.Name)
.Distinct()
.Select(team => new Team {Name = team})
.OrderBy(team => team.Name)
.ToList();
要非常小心,因为这不是针对性能进行优化的,这只是为您提供所需的结果。如果您的数据集非常大,请不要使用此项,否则您将需要潜在地补偿加载时间。另外,您可能希望在IEqualityComparer
中添加一些类型以适应StringComparison
。然后比较器将作为参数传递给Distinct()
。
至于ItemCount,只需在获得distinctList
后在ViewModel中设置该变量即可。
this.ItemCount = distinctList.Count();
答案 1 :(得分:0)
您的问题含糊不清,但我猜您没有按照您的城市名称对结果进行分组。