まず、私はこの質問がこれらのSO質問の重複であるとは考えていません。
IList<T>ではなく常にIEnumerable<T>を返す必要がありますか? および戻り型としてのIEnumerable<T>
私たち全員が知っているように、いくつかの層を導入する主な目的は、結合を減らすことです。
データアクセス用のインターフェイスを定義する必要があり、BLはDAL実装の詳細を気にする必要はありません。言及された場合、インターフェースがIEnumerable<T>
BLを返すと、それが単なる静的なIEnumerable
ものなのか、実行が延期されたものなのかがわかりません。同時に、この特定の詳細はパフォーマンスに大きな影響を与える可能性があり、実装に応じて異なるコーディングが必要になります。
さて、コレクションを数回繰り返す場合は.ToList()
、それぞれを呼び出すことができます。IEnumerable
ただし、これにより、新しいリストのインスタンス化が不要になるため、静的コレクションのパフォーマンスが低下します。
だから私はどちらのアプローチが良いかを理解しようとしています。
より普遍的で潜在的にパフォーマンスが低いvsより結合された-よりパフォーマンスが高い。特効薬はないと思いますが、私が見逃した他のアプローチかもしれません。