C# 如何从参数化列表返回值<;字符串>;(整数、列表、字符串和行)
如何返回字符串列表并执行返回而不将其打印出来?该函数将获取字符串并按字典顺序重新排列它们。我的解决方案会打印出来。我尝试了以下方法:C# 如何从参数化列表返回值<;字符串>;(整数、列表、字符串和行),c#,C#,如何返回字符串列表并执行返回而不将其打印出来?该函数将获取字符串并按字典顺序重新排列它们。我的解决方案会打印出来。我尝试了以下方法: public static List<string> paragraph(int number, List<string> lines) { var words = lines.ToArray(); var sort = from x in words orde
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;
}
公共静态列表段落(整数,列表行)
{
var words=lines.ToArray();
var sort=从x开始,以字表示
orderby x
选择x;
foreach(分类中的var项目)
{
控制台写入线(项目);
}
返回null;
}
我能找到的唯一解决办法就是把它们打印出来。我能看到结果。但是如何存储通过循环的
项
,并在main方法中打印出来呢?非常感谢您的帮助。您正在打印中的每一行
foreach (var item in sort) { Console.WriteLine(item); }
挡块
删除for循环并返回“sort.ToList()”如
在您的原始代码中进行了大量不必要的工作。这就是使用linq对原始列表排序并返回它所需的全部内容
public static List<string> paragraph(int number, List<string> lines)
{
return lines.OrderBy(x => x).ToList();
}
公共静态列表段落(整数,列表行)
{
返回lines.OrderBy(x=>x.ToList();
}
编辑:修复了缺少的箭头和简化的只是基于所用变量名称的模糊猜测(某种智能逆向工程)——可能不是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
}
公共静态列表字(整数,列表行)
{
变量分隔符=new[]{',',',',';','',''''''.\n','\r'};
回程线
.SelectMany(l=>l.Split(分隔符、StringSplitOptions.RemoveEmptyEntries))//从所有行中提取所有单词
.Select(w=>w.ToLowerInvariant())//使其小写
.Distinct()//删除重复项
.OrderBy(w=>w)//字典顺序
.Take(number)//仅使用int参数
.ToList()//具体化结果
}
我将您的问题解释为:
如何获取字符串列表并按字典顺序重新排列,然后返回它们而不打印出来
如果是这种情况,只需调用OrderBy
对行进行排序,然后返回调用ToList()
的结果,即可实现查询:
public static List<string> GetOrderedLines(List<string> lines)
{
return lines?.OrderBy(line => line).ToList();
}
公共静态列表GetOrderedLines(列表行)
{
返回行?.OrderBy(行=>line).ToList();
}
对不起,我不知道你在问什么?是否要对行进行排序
并将排序后的列表作为单独的列表返回?如果不想打印它们,请删除控制台.WriteLine
调用。是否要执行LINQ查询sort.ToList()
将执行此操作。但是Rufus提出了一个有效的观点:实现查询的是foreach
,而不是WriteLine()。或者您是说要返回排序
而不是空值
?另外,整数
参数的作用是什么?代码中没有使用它。另外,如果您不想在方法内部输出结果,可以将其缩减为一行:returnlines.OrderBy(line=>line.ToList()代码>这仍然是不必要的代码。他将把行复制到单词中,而不是仅仅在行上使用linq。这是正确的,但是在方法中这样做会改变原始列表,因为它们是通过引用传递的。如果它是预期的,那么函数可能是无效的,但这会“混淆”外部使用此方法的人,因为该方法是公共的。OrderBy
不会影响原始列表-它返回一个新的iorderenumerable
,因此可以安全地执行返回行。OrderBy(x=>x.ToList()代码>您似乎将行中的每个条目都视为自己的列表。这可能会奏效,但远远超出了他的要求。
public static List<string> GetOrderedLines(List<string> lines)
{
return lines?.OrderBy(line => line).ToList();
}