2017-07-13 14 views
-2

ラムダ式を使用してDataTable列を反復処理します。現在私はForEachで試しています。以下はサンプルコードです。ラムダ式を使用してDataTable列を反復する

foreach (DataColumn x in registeredpeople.Columns) 
{ 
    Response.Write(tab + x.ColumnName); 
    tab = "\t"; 
} 

私はこれをリストのコレクションで行うことができます。

exampleCollection.ForEach(x => 
{ 
    sample.ID = x.Value, 
    sample.Name = x.Text 
}); 
+0

なぜこのようにしたいのですか?なぜ、標準の 'foreach'は良いものではないのですか? – Magnus

+0

@Magnusは 'foreach'が良くないためではありません。可能な限り、foreachの代わりにラムダ式を使用していたので、アプリケーションの統一性を維持したいだけです。私はラムダ式がコードをきれいにすると感じています。 –

+0

Eric Lippertは、C#コンパイラチームの取り組みから読むべきです:https://blogs.msdn.microsoft.com/ericlippert/2009/05/18/foreach-vs-foreach/ – Magnus

答えて

2

ForEachList<T>の方法であるので、あなたはリストにそのコレクションを変換する必要があります。しかし、それは本当に努力の価値があるのですか?もちろん

registeredpeople.Columns // returns a DataColumnCollection 
    .Cast<DataColumn>() // needed because DataColumnCollection doesn't implement IEnumerable<T> but just the non-generic IEnumerable(its old) 
    .ToList()    // needed because you want to use a method of List<T>, created a new List and fills it in a loop 
    .ForEach(col => Console.WriteLine(col.ColumnName)); 

foreach、より効率的であり、あなたはForEachから任意の利点を持っていません。

関連する問題