2016-08-25 9 views
1

辞書に存在するすべてのエントリに列挙名のリストと一致するLINQ文を作成しました。私は関数を呼び出して、それにマッチした文字列を渡したいと思います。私はこれを持って、それは動作しますが、それは特に、私の機能から文字列を返すために、少し臭い。戻り値のないLinq文から関数を呼び出す方法は?

var pas = Enum.GetNames(typeof(enums))       
       .Select(x => { return DoSomething(x); }).ToList(); 

などDoSomething見て:私は、関数空間を作ることができるように

private string DoSomething(string name) 
{ 
    // do stuff 
    return name; 
} 

は、それが書き換えることはできますか?

+0

'.Select'を使用しないでください。 –

+0

'Enum.GetNames(typeof(enums))。ToList()。Foreach ' –

+1

linq noを使用していますが、関数を実行したい場合は、リストのいずれかでForEachを呼び出すことができます。https://msdn.microsoft.com/ en-us/library/bwabdf9z(v = vs.110).aspxまたはParallel https://msdn.microsoft.com/en-us/library/dd460720(v=vs.110).aspx – MikeT

答えて

2

LINQのは、ボイドはデータがないとして、あなたはそれを使用することはできません、データを選択するためのものです。

が、2番目は非同期でそれらを実行するために、複数のスレッドを使用するパラレル

Parallel.ForEach(Enum.GetNames(typeof(enums)), DoSomething) 

から一覧

Enum.GetNames(typeof(enums)).ToList().ForEach(DoSomething) 

から値

のリストに関数を呼び出すために設計された2つの方法があります

1

ではなくList.ForEachを試してみてください。

Enum.GetNames(typeof(enums)).ToList().ForEach(x => DoSomething(x)); 
+0

ありがとうございます - Enum.GetNames(typeof(ProductAttributeList))。ToList()。ForEach(SetAttribute) – davy

1

2つの方法があります。あなたはSelectにそれを置くことを主張した場合、あなたはこれを行うことができます:

var pas = Enum.GetNames(typeof(enums)) 
       .Select(x => { 
        DoSomething(x); 
        return x; 
       }).ToList(); 

をしかし、次はきれいなアプローチのようになります。

var pas = Enum.GetNames(typeof(enums)).ToList(); 
pas.ForEach(name => DoSomething(name)); 
関連する問題