如何消除 LINQ 查询语法中的变量声明

本文关键字:变量 声明 语法 查询 何消 LINQ | 更新日期: 2023-09-27 18:17:23

使用方法语法我可以打印以控制台所有 100 美元的订单

foreach (var order in orders.Where(o => o.Amount == 100))
   Console.WriteLine("Order: {0} - Order Amount: {1}", order.OrderID, order.Amount);

但是要使用查询语法执行此操作,我必须先创建一个 var 来存储结果,然后再进行 Console.WriteLine 循环:

var summary = from o in orders
              where o.Amount == 100 
              select o;                                        
foreach (var order in summary)
   Console.WriteLine("Order: {0} - Order Amount: {1}", order.OrderID, order.Amount);

是否可以减少此查询语法以消除摘要声明?

如何消除 LINQ 查询语法中的变量声明

您是否尝试过将查询括在括号中?

foreach (var order in (from o in orders
          where o.Amount == 100 
          select o))

您还可以考虑在 List 上使用 ForEach 扩展(在此处记录(,如下所示:

 (from o in orders 
  where o.Amount == 100 
  select o)
 .ToList().ForEach(o => Console.WriteLine(...))
foreach (var order in (from o in orders
              where o.Amount == 100 
              select o))
{
    // ...
}

应该工作 - 查询将首先返回您的列表,然后由foreach迭代。查询基本上只是由运行时转换为(或多或少(第一个示例中的相同方法语法。