我有一组绑定到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);
}
答案 0 :(得分:1)
我假设主要担心的是大字符数组。以下内容也应该有效......
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++;
}
答案 1 :(得分:1)
在我的头顶上,听起来你可以用你的收藏链接生成的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。
答案 2 :(得分:1)
我实际上并没有手头的编译器,但是如何处理这个问题呢?
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)
});