创建A-Z下面条
是我使用当前但不知道代码有没有这样做我在做什么更好的办法......我创建像A B C dé....ž创建A-Z下面条
任何想法A-Z模式?
if (myEnum.MoveNext())
{
MyNames t = myEnum.Current;
if (t.Name.ToLower().StartsWith("a"))
{
if (_a == 0)
{
l = new Literal();
//.....
_a = 1;
}
}
if (t.Name.ToLower().StartsWith("b"))
{
if (_b == 0)
{
l = new Literal();
l.Text = "<h1 id='B'><span>B</span></h1>" + Environment.NewLine;
_b = 1;
}
}
.....c..d...e...f...g....z
}
您也可以使用带有LINQ“聚合”功能。
string[] list = { "a", "b", "c" };
var output = list.Aggregate("", (current, listitem) => current + (Environment.NewLine + "<h1 id='" + listitem.ToUpper() + "'><span>" + listitem.ToUpper() + "</span></h1>"));
我觉得这个代码非常相似,我需要基于我目前的设置。 – 2011-06-04 01:37:53
您可以使用Linq GroupBy并按第一个字母对所有名称进行分组。然后,您可以快速转储结果。
http://msdn.microsoft.com/en-us/vcsharp/aa336754.aspx#simple2
它看起来像你直接使用收集的调查员会和硬编码特定代码的每个字母。据推测,每个字母的输出应该是相同的,唯一的区别是字母本身。我会废弃你当前的代码,而是做如下的事情。
// note: replace yourList with the correct collection variable
var distinctLetters =
yourList.Select(item => item.Name.Substring(0,1).ToUpper())
.Distinct()
.OrderBy(s => s);
StringBuilder builder = new StringBuilder();
foreach (string letter in distinctLetters)
{
// build your output by Appending to the StringBuilder instance
string text = string.Format("<h1 id='{0}'><span>{0}</span></h1>" + Environment.NewLine, letter);
builder.Append(text);
}
string output = builder.ToString(); // use output as you see fit
对于包含姓名Alpha, Charlie, Delta, Alpha, Bravo
列表,输出将是
<h1 id='A'><span>A</span></h1>
<h1 id='B'><span>B</span></h1>
<h1 id='C'><span>C</span></h1>
<h1 id='D'><span>D</span></h1>
什么是yourList和项目将?我尝试类似但没有工作'var distinctLetters = t.Select(t.Name.Substring(0,1).ToUpper())。Distinct();'因为t是我的枚举列表 – 2011-06-03 20:40:49
对不起,我有一个错字,我会给答案增加一点说明。 – 2011-06-03 20:42:42
@Anthony:我没有收藏,但我只是一次收到一行,在那种情况下你会怎么做? – 2011-06-03 21:01:43
什么是家庭作业标签? – 2011-06-03 20:31:38
你在问什么? – Oded 2011-06-03 20:31:48
@Anthony编辑我的问题,并将我的问题标记为“家庭作业”,但我现在没有看到,可能是他删除了 – 2011-06-03 20:34:18