0

ここのコードで ToLookup メソッドの機能を理解しようとしています。グループ化を使用してリストを返しています。誰かがこれがどのように機能しているかを教えてくれますか、それとも正しい方向に私を導くことができますか:

.ToLookup(
  c => new 
  {
      c.CoverageType.Code, 
      c.CoverageType.Mnemonic, 
      c.CoverageType.Description, 
      c.CoverageType.CoverageLevel, 
      c.CoverageType.CoveragePosition
  })
.Select(
  t => new CoverageOption
  {
    CoverageType =
      new CoverageType
      {
          Code = t.Key.Code, 
          Mnemonic = t.Key.Mnemonic, 
          Description = t.Key.Description, 
          CoverageLevel = t.Key.CoverageLevel, 
          CoveragePosition = t.Key.CoveragePosition
      },
    Limits =
      (from Coverage c in t select c.Limit).GroupBy(l => l.Code)
        .Select(gr => gr.First()), 
    Deductibles =
      (from Coverage c in t select c.Deductible).GroupBy(d => d.Code)
        .Select(gr => gr.First())
})
.OrderBy(t => t.CoverageType.CoveragePosition);
4

2 に答える 2

1

ソースアイテム(タイプがあると思いますCoverage)は、次のキーでグループ化されます。

new 
{
  c.CoverageType.Code, 
  c.CoverageType.Mnemonic, 
  c.CoverageType.Description, 
  c.CoverageType.CoverageLevel, 
  c.CoverageType.CoveragePosition
}

入力シーケンス内の個別のキーごとに、aCoverageOptionが作成されます。1つのキーが複数のアイテムに関連付けられている場合がCoverageあり、各キーと1つ以上の関連付けられCoverageたアイテムについて、次のプロパティCoverageOptionが計算されることに注意してください。

  • プロパティはCoverageTypeキーから計算されます。

  • Limitsプロパティは、関連するアイテムのすべての値Limitを取得し、Coverage個別Coverage.Limit.Codeに最初のLimitインスタンスを選択することによって計算されます。つまり、これはLimitそれぞれが異なる。を持つオブジェクトのシーケンスですCode

  • Deductiblesプロパティは、関連するアイテムのすべての値Deductibleを取得し、Coverage個別Coverage.Deductible.Codeに最初のDeductibleインスタンスを選択することによって計算されます。つまり、これはDeductibleそれぞれが異なる。を持つオブジェクトのシーケンスですCode

于 2012-10-30T10:51:48.183 に答える
0

ドキュメントに記載されているように:

ToLookup(IEnumerable、Func)メソッドは、キーを値のコレクションにマップする1対多のディクショナリであるLookupを返します。ルックアップは、キーから単一の値への1対1のマッピングを実行するディクショナリとは異なります。

に似ていますが、ここでGroupBy説明するいくつかの違いがあります。

于 2012-10-30T10:27:06.150 に答える