如何返回字符串列表并执行返回值,而不打印出来??该函数接受它们并按字典顺序重新排列它们。我的解决方案将它们打印出来。我尝试了以下方法:
public static List<string> paragraph(int number, List<string> lines)
{
var words = lines.ToArray();
var sort = from x in words
orderby x
select x;
foreach (var item in sort)
{
Console.WriteLine(item);
}
return null;
}
我唯一能找到的解决方案是将它们打印出来。我可以看到结果。但是,如何存储循环中的item
并在main方法中将它们打印出来?非常感谢您的帮助。
答案 0 :(得分:3)
您正在打印
中的每一行foreach (var item in sort) { Console.WriteLine(item); }
块 删除for循环并返回“ sort.ToList()”,如
return sort.ToList()
答案 1 :(得分:3)
原始代码中有很多不必要的工作。这就是您需要使用linq对原始列表进行排序并返回它的全部。
public static List<string> paragraph(int number, List<string> lines)
{
return lines.OrderBy(x => x).ToList();
}
编辑:修复了丢失的箭头并简化了
答案 2 :(得分:2)
我将您的问题解释为:
我如何获取一个字符串列表,然后按字典顺序重新排列它们,然后不打印出来就返回它们?
在这种情况下,您只需调用OrderBy
来对行进行排序,然后返回调用ToList()
的结果即可实现查询:
public static List<string> GetOrderedLines(List<string> lines)
{
return lines?.OrderBy(line => line).ToList();
}
答案 3 :(得分:-1)
基于使用的变量的名称(一种智能逆向工程)进行模糊的猜测-可能不是OP想要的,但是很明显,他/她想要的不是他/他想要的东西。
public static List<string> Words(int number, List<string> lines)
{
var separators = new[] {',','.',';',' ','\n','\r'};
return lines
.SelectMany(l => l.Split(separators, StringSplitOptions.RemoveEmptyEntries)) // take all words from all lines
.Select(w => w.ToLowerInvariant()) // make them lowercase
.Distinct() // remove duplicates
.OrderBy(w => w) // lexicographical ordering
.Take(number) // just to use the int parameter
.ToList() // materialize result
}