让我们说我在以下列表中有一个String项列表: “苹果”, “杏”, “香蕉”, “蓝莓”, “图”, “葡萄” ...
如您所见,我们有几个A项目,几个B项目,然后我们先跳过C D和E,然后再选择F和G项目。我需要帮助弄清楚如何遍历此列表,并在A项之前插入“ A”,然后在B项之前插入“ B”,依此类推...但是重要的是即使没有C,D ,或E项,我仍然需要插入“ C”,“ D”和“ E”吗?因此,当打印到屏幕上时,它将看起来像这样……
有没有办法用香草C#做到这一点?
答案 0 :(得分:0)
这是我的处理方式:
string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<string> listOfWords = new List<string>
{
"Appricot",
"Apple",
...
};
foreach (string letter in letters)
{
Console.WriteLine(letter);
List<string> words = listOfWords.Where(word => word[0].ToUpper().Eqauls(letter)).ToList();
words.ForEach(word => Console.WriteLine(word));
}
这将遍历letters
中的所有字母并将它们打印到控制台。
然后它将把listOfWords
中的所有单词以字母开头并打印出来。
希望这会有所帮助:)
答案 1 :(得分:0)
我相信这可以通过其他许多更好的方法来完成,但最简单的方法是-
List<string> prods = new List<string>();
prods.AddRange(new List<string>() {
"Apple",
"Apricot",
"Banana",
"Blueberry",
"Fig",
"Grape"
});
//Considering that the list is already sorted alphabetically
//or you can use prods.Sort();
List<string> newList = new List<string>();
string alphabets = "abcdefghijklmnopqrstuvwxyz";
foreach(char a in alphabets)
{
newList.Add(a.ToString());
foreach (var item in prods)
{
if (item.StartsWith(a.ToString()) || item.StartsWith(a.ToString().ToUpper()))
{
Console.WriteLine($"adding {item} to newlist");
newList.Add(item);
}
}
}
foreach (var item in newList)
{
Console.WriteLine(item);
}
Console.ReadKey();
请让我知道它如何为您服务。
答案 2 :(得分:0)
好吧,这看起来真的很简单。
var yourList = new List<string>() {
"Apple", "Apricot", "Banana", "Blueberry", "Fig", "Grape"
};
yourList
.AddRange("ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray().Select(x => x.ToString()).ToList());
yourList.Sort();