如何防止ItemCount的重复?

时间:2016-07-23 20:40:12

标签: c# wpf

我列出了与某个国家/地区相关的匹配项。现在在迭代中我为每个匹配分配这个国家,例如:

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中防止这种情况而不显示重复的项目,这可能吗?

2 个答案:

答案 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)

您的问题含糊不清,但我猜您没有按照您的城市名称对结果进行分组。