c#初学提问-字符串数组排序问题
Puss 2019-03-28 07:50:12 目标:输入单词,如果重复显示重复,如果不输入则显示已经输入过的所有单词。再输入一次已经首字母排序之后的所有单词。
分割线上面的都懂了,关于排序,我想用今天课上讲的字符串数组排序来做,但是感觉和老师ppt上说的做起来又不一样,这个是老师PPT上的例子,我也不是太懂,百度了也依旧很混乱。。。标出红色的都是我不太懂的,希望能有耐心的大佬愿意教教我,特别感谢:
string[] books = { "Java", "C#", "C++", "vb" };
Console.WriteLine("初值:");
PrintAarrayValues(books);
Array.Sort(books);
Console.WriteLine("升序排序后的值:");
PrintAarrayValues(books);
Array.Reverse(books);
Console.WriteLine("降序排序后的值:");
PrintAarrayValues(books);
Console.WriteLine("数组中是否有元素C#:{0}",
books.Contains("C#") ? true : false);
Console.WriteLine("元素C#在降序排序后的数组中的位置:{0}",
Array.IndexOf(books, "C#"));
Console.ReadLine();
}
我想的是把列表转化为字符串数组,然后再对这个数组进行排序,但是因为我依旧不是很能掌握排序的使用方法,所以输出的结果依旧没有给我排序。
还有就是list应该可以直接用sort()进行排序,但是我看的很多网上的讲解都是一个list里面有什么姓名、学号、年龄等等各种不同属性的数据,像这种只有有用户输入的单词应该怎么用sort进行排序呢?
static void Main(string[] args)
{
List<string> list = new List<string>();
while (true)
{
string str = Console.ReadLine();
if (str == "")
{
Console.WriteLine("已经完成");
break;
}
var v = list.SingleOrDefault(x => x == str);
if (v == null)
{
list.Add(str);
}
else
{
Console.WriteLine("已经存在");
}
}
foreach (var item in list)
{
Console.WriteLine(item);
}
--------------------------------------------------------------------------
System.String[] sz = list.ToArray();//把列表转化为字符串数组
Console.WriteLine("排序后:");
var query = from val in sz
orderby val descending
select val;
foreach(var item in query)
{
Console.Write(item);
}
Console.WriteLine();
sz = sz.OrderBy(p => p).ToArray();//对数组内的元素排序
}