簡體   English   中英

如何在LINQ查詢語法foreach中消除變量聲明?

[英]How can you eliminate variable declaration in LINQ query syntax foreach?

使用方法語法,我可以打印以管理所有$ 100的訂單

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

但是要使用查詢語法做到這一點,我必須先創建一個變量,以便在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);

可以減少此查詢語法以消除摘要聲明嗎?

您是否嘗試過僅將查詢括在括號中?

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 在第一個示例中,查詢基本上只是由運行時轉換為(或多或少)相同的方法語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM