1

次のような TypeA と B があります。

class TypeA
{

prop 1;
prop 2;
prop 3;
prop 4;
...
prop 15;
}

class TypeB
{

prop a;
prop b;
prop c;
...
prop p;
}

TypeB の各プロパティ値は、TypeA のいくつかのプロパティを操作することによって構築されます。

今、私は次のようなことをする必要があります

List<TypeB> list= SomeConverter(List<TypeA>);

ソース リストには、約 5000 個のオブジェクトが含まれる場合があります。

これを行うための最速の方法を知りたいです。コードの読みやすさは私の関心事ではありません。

マッピングする必要があるタイプはほとんどありません。

ありがとう

4

2 に答える 2

2

TypeAの各インスタンスをのインスタンスに変換するコストを回避することはできませんがTypeB、初期容量を設定することでリストのサイズを変更するコストを回避できます。

List<TypeB> listB = new List<TypeB>(listA.Count);
listB.AddRange(listA.Select(SomeConverter));

TypeB SomeConverter(TypeA input)
{
    return new TypeA() { ... };
}

または、これにより、パフォーマンスがわずかに向上します。

List<TypeB> listB = new List<TypeB>(listA.Count);
foreach(var a in listA)
{
    listB.Add(SomeConverter(a));
}

もちろん、多くの場合、最大のパフォーマンスは、そもそもリストを熱心に使用することから得られます。たとえばToList()、Linq クエリを呼び出すときに を呼び出すと、クエリがすぐに評価され、結果がList<T>. 代わりに、できるだけ遅くまで評価を延期できれば、通常、最もコストのかかる処理の多くを回避できます。一般に、セットに対して動的な挿入/削除を本当に行う必要がない限り、リストの使用はほぼ確実に避けるべきです。

于 2013-08-03T15:07:57.253 に答える
1

AutoMapperはそのような場合に適したライブラリです。巨大なリストでは試していませんが、試してみてください。

于 2013-08-03T15:12:14.207 に答える