小编Edd*_*die的帖子

生成随机唯一数字的性能问题

我有一种情况,我需要创建成千上万的唯一数字.但是这些数字必须是9位数,不能包含任何0.我当前的方法是生成9位数(1-9)并将它们连接在一起,如果该数字不在列表中,则将其添加到其中.例如

public void generateIdentifiers(int quantity)
{
    uniqueIdentifiers = new List<string>(quantity);
    while (this.uniqueIdentifiers.Count < quantity)
    {
        string id = string.Empty;
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += " ";
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += " ";
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        if (!this.uniqueIdentifiers.Contains(id))
        {
            this.uniqueIdentifiers.Add(id);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,由于越来越多的生成数字是重复的,因此在大约400,000时,该过程确实变慢.我正在寻找一种更有效的方式来执行这个过程,任何帮助将非常感激.

编辑: - 我正在生成这些 - http://www.nhs.uk/NHSEngland/thenhs/records/Pages/thenhsnumber.aspx

c# random performance uniqueidentifier

11
推荐指数
1
解决办法
1837
查看次数

C#List <>我应该在删除项目时降低容量吗?

我有一个List容器,最开始可能包含100,000个项目.当程序运行时,此列表将慢慢清空,我是否应该在清空列表时更改容量?

我做了一些测试,执行时间似乎是一样的,但降低列表容量有多少开销?我可以找到很多关于增加容量的信息,但没有太多关于降低容量的信息.

c# list capacity

7
推荐指数
1
解决办法
2777
查看次数

WPF组合框 - 按标签选择项目

我有一个像这样的组合框

    <ComboBox Name="myMenu">
        <ComboBoxItem Content="Question 1" Tag="1"  />
        <ComboBoxItem Content="Question 2" Tag="2"  />
        <ComboBoxItem Content="Question 3" Tag="3"  />
        <ComboBoxItem Content="Question 4" Tag="4"  />
    </ComboBox>
Run Code Online (Sandbox Code Playgroud)

如何通过标记值以编程方式设置所选索引?例如'myMenu.selectedTag = 3'和问题3将是所选项目?

我想要的东西比现在的解决方案更容易......

      int tagToSelect = 3;
      foreach (ComboBoxItem item in myMenu.Items)
      {
          if(item.Tag.Equals(tagToSelect)
          {
               myMenu.SelectedItem = item;
          }
      }
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml combobox

7
推荐指数
1
解决办法
8391
查看次数

XAML 路径 - 添加文本

我已经创建了以下 XAML 路径,但想向其中添加文本“返回”。

在此处输入图片说明

这就是我添加它的方式...

   <Path Style="{StaticResource BackButton}">

   </Path>
Run Code Online (Sandbox Code Playgroud)

但是,当我在路径中添加任何内容时,我收到消息

The type 'Path' does not support direct content.
Run Code Online (Sandbox Code Playgroud)

有小费吗?

编辑 - 这是样式

   <Style x:Key="BackButton" TargetType="{x:Type Path}">
        <Setter Property="Data" Value="F1 M 639.667,236.467L 645.092,236.467L 725.566,236.467L 725.566,253.513L 645.092,253.513L 639.673,253.513L 619.787,244.99L 639.667,236.467 Z " />
        <Setter Property="Height" Value="30" />
        <Setter Property="MinWidth" Value="100" />
        <Setter Property="Fill" Value="#FFFFFFFF" />
        <Setter Property="StrokeThickness" Value="1" />
        <Setter Property="Stroke" Value="#FF999B9C" />
        <Setter Property="Stretch" Value="Fill" />
        <Setter Property="Cursor" Value="Hand" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Fill" Value="#FFEEEEEE" />
            </Trigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

xaml

0
推荐指数
1
解决办法
3686
查看次数

标签 统计

c# ×3

xaml ×2

capacity ×1

combobox ×1

list ×1

performance ×1

random ×1

uniqueidentifier ×1

wpf ×1