• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C#】LINQについての質問です。)

【C#】LINQのコードでラムダ式のtとsは何を指しているのか教えてください!

このQ&Aのポイント
  • プログラミングLINQ(日経BP)の本を読んでいる中で、わからない部分が出てきました。
  • 具体的には、P87のリスト3-43のコードにおいて、ラムダ式のtとsが何を指しているのかが分からないです。
  • 分かる方がいれば、教えていただきたいです。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

>tとsが何にを指しているのかということです。 その部分は引数の数を指しているに過ぎませんよ。 この部分を理解するには、 orders.Aggregate()のとる引数に注目することが必要です。 たぶん、 第2パラメータがFunc(x,y)のような感じになっていませんか? これはデリゲートが引数になっているのです。 要するに、引数として (t, s) => t.Amount > s.OrderAmount ? t : new { Amount = s.OrderAmount, Month = s.Month } という式を渡してあげているのです。 そのため、 tとsにはその式内での仮名に過ぎませんので、 意味は特にないですね。 hogeとかでも識別できればよいことになります。

oboroxx
質問者

お礼

申し訳ございません、理解いたしました。 デリゲートのFunc<>だと、引数の型指定もされている事を忘れていました。 申し訳ございません。 解決しましたので閉じさせていただきます。

oboroxx
質問者

補足

早速の回答ありがとうございます。 おっしゃっている内容はわかるのですが、本にはAggregateについて以下のように書いてあります。 public static TAccumulate Aggregate<TSource,TAccumulate>( this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func); 上のはオーバーロードの一例ですが、私がわからないのは、上ではfuncの引数に対して何にも語られていません。 ということは、なぜ、 (t, s) => t.Amount > s.OrderAmount ? t : new { Amount = s.OrderAmount, Month = s.Month } で、tが何になり、sが何になるのかはどうやって決まるのかという事がわからないのです。 そういうものだとして、受け入れればいいのかもしれませんが、自分で書くときに、理解していないと書けないと思い質問させていただきました。 そのあたりについて何かおわかりの事がありましたらよろしくお願いいたします。

関連するQ&A