-3

アプリケーションに以下のレガシー コードがあり、最適化したいと考えています。arrayOfAttrValue固有の属性を持っています。LINQ を使用してループの最適化を達成できますか? もしそうなら、あなたは私にどのように見せてもらえますか?

foreach (AttrValue attr in arrayOfAttrValue)
{
    switch(attr.Attribute)
    {
        case Constants.Gender
            mymodel.Gender = attr.Value;
            break;
        case Constants.Identifier
            mymodel.AppIdentifier = attr.Value;
            break;
    }
}

私の意図は、必ずしもLINQのみを使用することではありません。ループを最小限に抑える他の方法も役立ちます。

ありがとう。

4

3 に答える 3

1

いいえ、LINQ は古いオブジェクトから新しいオブジェクトを生成するためのものであるため、「真の」LINQ では実行できません。これmymodelは、変更する既存のオブジェクトです。

Array.ForEachまたはList.ForEachを使用できますが、

  1. それらは「真の」LINQではなく、

  2. 結果のコードは同等になります (デリゲートがあるため、少し遅くなります)。

それでも、反対票を投じた人はおそらく LINQ を望んでいたので、LINQ をいくつか紹介します。

arrayOfAttrValue.All(attr => {
    mymodel.Gender = attr.Attribute == Constants.Gender ? attr.Value : mymodel.Gender;
    mymodel.AppIdentifier = attr.Attribute == Constants.Identifier ? attr.Value : mymodel.AppIdentifier;
    return true;
});

行を無視して、1 行少なくし{}ます。

于 2013-08-19T10:17:22.713 に答える