2

メソッド構文を使用して、$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 を作成する必要があります。

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);

このクエリ構文を縮小して要約の宣言をなくすことはできますか?

4

2 に答える 2

5

クエリを括弧で囲んでみましたか?

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

ForEach次のように、拡張機能の使用を検討することもできますList(ドキュメントはこちら)。

 (from o in orders 
  where o.Amount == 100 
  select o)
 .ToList().ForEach(o => Console.WriteLine(...))
于 2013-06-08T03:15:28.563 に答える
1
foreach (var order in (from o in orders
              where o.Amount == 100 
              select o))
{
    // ...
}

動作するはずです-クエリは最初にリストを返し、それからforeach. クエリは基本的に、ランタイムによって最初の例と同じメソッド構文に (多かれ少なかれ) 変換されます。

于 2013-06-08T03:15:03.807 に答える