-2

リストがあり、SomeObject にはプロパティ TargetObject があります。SomeObjects が TargetObject に続く List を作成する必要があります。

SO_1 (TO_1) | SO_2 (TO_2) | SO_3 (TO_3) | SO_4 (TO_1) | SO_5 (TO_1) | SO_6 (TO_1) | SO_7 (TO_1) | SO_8 (TO_2) | SO_9 (TO_2) | SO_10 (TO_4)

に変換する必要があります

SO_1 (TO_1) | SO_2 (TO_2) | SO_3 (TO_3) | SO_10 (TO_4) | SO_4 (TO_1) | SO_8 (TO_2) | SO_6 (TO_1) | SO_9 (TO_2) | SO_7 (TO_1) | SO_5 (TO_1)

最後に、MaxDegreeOfParallelism = 5 で Parallel.ForEach(List) を実行したいので、5 つの項目の各ループが同時に同じ TargetObject を持つことはありません。

ありがとう

4

2 に答える 2

0

これはInterlaceBy私がさまざまな目的で使用する拡張方法ですが、あなたのケースには当てはまるようです。

List<int> list = new List<int>() {1,2,3,1,1,1,1,2,2,4 }; //your TO's
var newlist = list.InterlaceBy(x => x).ToList(); //1,2,3,4,1,2,1,2,1,1

public static partial class MyExtensions
{
    public static IEnumerable<T> InterlaceBy<T, S>(this IEnumerable<T> input, Func<T, S> selector)
    {
        return input
              .GroupBy(selector)
              .SelectMany(g => g.Select((x, i) => new { key = i, value = x }))
              .OrderBy(x => x.key)
              .Select(x => x.value);
    } 
}
于 2012-10-21T11:48:28.090 に答える