带有字母字符的 C# 前缀单选按钮列表选项
本文关键字:前缀 单选按钮 列表 选项 字符 | 更新日期: 2023-09-27 18:31:18
我有一个绑定到System.Web.UI.WebControls.ListControl
的对象集合:
foreach (var answer in SomeCollection)
{
System.Web.UI.WebControls.ListItem listItem = new System.Web.UI.WebControls.ListItem();
listItem.Value = answer.ID.ToString();
listItem.Text = answer.AnswerText;
listControl.Items.Add(listItem);
}
我现在想为"A"、"B"、"C"、"D"等的每个答案添加一个前缀。因此,输出如下所示:
A. Answer 1
B. Answer 2
C. Answer 3
我们拥有的最多答案是 10 个,因此无需担心用完字母。正确的方法是什么?
我已经尝试了以下内容并且它有效,但是我觉得应该有更好的方法:
char[] alphabet = new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G',..., 'Y', 'Z' };
for (int i = 0; i < SomeCollection.Count; i++)
{
var answer = SomeCollection[i]
System.Web.UI.WebControls.ListItem listItem = new System.Web.UI.WebControls.ListItem();
listItem.Value = answer.ID.ToString();
listItem.Text = alphabet[i] + "." + answer.AnswerText;
listControl.Items.Add(listItem);
}
我假设主要关注的是大字符数组。以下也应该有效...
char letter = 'A';
for (int i = 0; i < SomeCollection.Count; i++)
{
var answer = SomeCollection[i]
System.Web.UI.WebControls.ListItem listItem = new System.Web.UI.WebControls.ListItem();
listItem.Value = answer.ID.ToString();
listItem.Text = letter + "." + answer.AnswerText;
listControl.Items.Add(listItem);
letter++;
}
在我的头顶上,听起来你可以压缩一个生成的 Enum.Range.字符范围与你的集合......也许是这样的:
var someCollection = new List<string> {"Item1", "Item2", "Item3"};
var prefixes = Enumerable.Range('a', 'z' - 'a' + 1).Select(x => (char)x);
...
var items = prefixes.Zip(someCollection, (a,b) => a + " " + b);
这样做,您可以将项目集合直接分配给您的 listControl。
我手头实际上没有编译器,但是类似的东西怎么样?
var charcode = (int)'A';
var items = SomeCollection.Select((answer, index) => new ListItem{
Value = answer.ID,
Text = String.Format("{0}.{1}", (char)(charcode+index), answer.AnswerText)
});