LINQ 打印出语法而不是结果

LINQ prints out sytax instead of result

练习 LINQ 并 运行 陷入新手错误。

static void Main(string[] args)
{
    List<string> Customers = new List<string>();
    Customers.Add("Faizan");
    Customers.Add("Ali");
    Customers.Add("Fazeel");
    Customers.Add("Salim");
    Customers.Add("Mueen");
    Customers.Add("Haleem");
    Customers.Add("Mazin");
    Console.WriteLine(Customers.OrderBy(s => s.Length));
    Console.ReadKey();
}

我 运行 这个并在 CMD window:

中得到这个结果

System.Linq.OrderedEnumerable`2[System.String,System.Int32]

如何让它按长度打印列表?

简单的解决方案:

static void Main(string[] args)
{
   List<string> Customers = new List<string>();
   Customers.Add("Faizan");
   Customers.Add("Ali");
   Customers.Add("Fazeel");
   Customers.Add("Salim");
   Customers.Add("Mueen");
   Customers.Add("Haleem");
   Customers.Add("Mazin");
   foreach(var customer in Customers.OrderBy(s => s.Length))
   {
      Console.WriteLine(customer);
   }
   Console.ReadKey();
}

方法 OrderBy 获取类型 IEnumerable<T> 的对象并将其转换为不同的 IEnumerable<T>

如果您想对每个项目进行操作,您仍然需要遍历每个项目。

尝试使用foreach循环显示所有数据。

 static void Main(string[] args)
    {

      List<string> Customers = new List<string>();
      Customers.Add("Faizan");
      Customers.Add("Ali");
      Customers.Add("Fazeel");
      Customers.Add("Salim");
      Customers.Add("Mueen");
      Customers.Add("Haleem");
      Customers.Add("Mazin");
        var abc = Customers.OrderBy(s => s.Length).ToList();
        foreach (var i in abc)
        {
            Console.WriteLine(i);
        }
        Console.ReadKey();

    }
  foreach(var items in Customers.OrderBy(s => s.Length))
   {
      Console.WriteLine(items);
   }

foreach 循环中的 Orderby 并打印出项目。

其他可能的解决方案是使用 String.Join 而不是 Foreach 循环:

List<string> Customers = new List<string>();
Customers.Add("Faizan");
Customers.Add("Ali");
Customers.Add("Fazeel");
Customers.Add("Salim");
Customers.Add("Mueen");
Customers.Add("Haleem");
Customers.Add("Mazin");

Console.WriteLine(String.Join(Environment.NewLine, Customers.OrderBy(s => s.Length)));

Console.ReadKey();