【问题标题】:List of names sorting them by LastName按姓氏排序的名称列表
【发布时间】:2022-01-14 16:39:23
【问题描述】:

我需要在一行中读取带有',' 的名称列表,例如: John Doe, Johnny Di, ... 我是一个初学者,所以我真的不知道如何正确地从列表中读取,但这就是我设法弄乱的

var names = new List<string>();

string name1 = Console.ReadLine();

while (name1 != "")
{
    names.Add(name1);
                    
    name1 = Console.ReadLine();
}
               
var res = from name in names
          orderby name.Split(" ")[1]
          ascending
          select name;

【问题讨论】:

  • var names = Console.ReadLine().Split(',') ?
  • 您的代码不会读取以逗号分隔的名称列表,而是一次读取一个名称,直到输入空白为止。

标签: c# linq


【解决方案1】:

类似这样的:

var res = Console
  .ReadLine()
  .Split(',', StringSplitOptions.TrimEntries)
  .OrderBy(name => name
             .Split(' ', StringSplitOptions.RemoveEmptyEntries)
             .LastOrDefault(),
           StringComparer.OrdinalIgnoreCase)
  .ToList(); // .ToArray(); if you want an array

我们来了

  1. 读取用户输入 - Console.ReadLine() - 所有名称以逗号分隔(例如 John Doe, Johnny Di, John Smith
  2. 在修剪每个项目时按, 拆分用户输入(让我们保持友好,并容忍逗号前后的空格,如John Smith, Jack Doe
  3. 订购商品:我们Split name 获取姓氏LastOrDefault 为姓氏
  4. 让我们有一个列表 (List&lt;string&gt;) 作为res

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多