2017-01-24 5 views
1

私は次のコードを持っており、それを簡単なステートメントに変換する必要があります(linqを使って削除してください)。Linq to simple foreach cicles

誰でも手伝いできますか?

public static IEnumerable<IEnumerable<T>> Combinations<T>(this IEnumerable<T> elements, int k) 
    { 
     List<T> list = new List<T>(); 
     foreach (var element in elements) 
     { 
      list.Add(element); 
     } 

     var enumerable = elements as IList<T> ?? list; 

     return k == 0 ? new[] { new T[0] } : 
      enumerable.SelectMany((e, i) => 
        enumerable.Skip(i + 1).Combinations(k - 1).Select(c => (new[] { e }).Concat<T>(c))); 
    } 
+0

あなたは直面している問題は何ですか? –

+0

すべて機能していますが、SQL CLR ASSEMBLYでこの関数を呼び出すと、null参照例外が返されます。私はlinqを使用して削除し、私のアセンブリからSystem.Coreの参照を削除します。私はSystem.CoreをSQL CLRアセンブラで使用する際の問題だと思う。 –

+2

LinqかLinqがなく、 'foreach'ループは' elements'が 'null'ならば' NullReferenceException'を引き起こします。 –

答えて

1

私はついにこの問題を解決しました。私は[SqlFunction(DataAccess = DataAccessKind.Read、SystemDataAccess = SystemDataAccessKind.Read)]属性を使用せずにデータベースからデータを読み込み、その結果をCombination関数に渡すudf clr関数を使用しました。その結果、functionのパラメータはnullになり、例外がスローされました。