我有一种情况,我需要创建成千上万的唯一数字.但是这些数字必须是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
我有一个List容器,最开始可能包含100,000个项目.当程序运行时,此列表将慢慢清空,我是否应该在清空列表时更改容量?
我做了一些测试,执行时间似乎是一样的,但降低列表容量有多少开销?我可以找到很多关于增加容量的信息,但没有太多关于降低容量的信息.
我有一个像这样的组合框
<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) 我已经创建了以下 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)