Select
のための署名を見てみる:
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector
)
(ジェネリック引数コンパイラが推論を含む)あなたのLINQクエリは次のとおりです。だから、
orders.Select<Order, MyOrderInfo>(x => new MyOrderInfo(x));
、引数から、それはIEnumerable<Order>
を取っていますIEnumerable<MyOrderInfo>
を返します。 Func
あなたはちょうどそれをやるべきSelect
に渡す:
x => new MyOrderInfo(x)
これはあなたが書くだろうメソッドのためだけの匿名メソッド、簡略化したものです。それがここに置換することができ書き出さフル方法は次のようになります。
public MyOrderInfo GetOrderInfo(Order x)
{
return new MyOrderInfo(x);
}
とMyOrderInfo
それがすべて罰金コンパイルので、Order
を取るコンストラクタを持っています。
Address1
ゲッターを持っているので、あなたは(それが本当にある)、ここでの方法と同じように考えることができます。 Address1
にアクセスするたびに、_order.ShiptoAddress[0].Value;
が表示されます。 _order
がコンストラクタでインスタンス化されました。したがって、ShipToAddress
に少なくとも1つの項目がある限り、動作します。
あなたはどうですか? – Servy
これをループごとに書き、linqと比較してください(http://stackoverflow.com/questions/24193898/how-do-i-convert-foreach-statement-into-linq-expression) – sous2817
@ sous2817:i foreachにそれを変換しようとしましたが...あなたはforeachの例にその行を変換してください... – bansi