0

次のコードの宣伝文句は、XML 内のRatingNumericValueを持つすべてのData要素を選択し、そのデータ要素の値を RatingNumericValue の内容に設定します。これが述語を使用するための良い候補になるかどうか疑問に思っていました。これを行うためにlinqを使用するより良い方法はありますか?

    Dim dataEls = From item In copy...<Table>...<Row>...<Cell>...<Data> Select item Where item.@RatingNumericValue IsNot Nothing
    For Each de In dataEls
        de.Value = de.@RatingNumericValue
    Next
4

2 に答える 2

5

これを行うためにlinqを使用するより良い方法はありますか?

いいえ。LINQ はクエリを目的としており、オブジェクトの変更は含まれません。同様に、述語は一種のマッチャーとして使用されます。ここでも、プロパティの設定とは関係ありません。

を使用することはできますが、使用しないことをお勧めします。これは、既に取得している単純なループにList<T>.ForEach比べて不必要に複雑です。foreach

理論的には、プロパティを設定し、常に true を返す述語を作成できます。その場合Count()、すべてのアイテムに対して述語を強制的に実行するには、結果に対してまたは何かを呼び出す必要があります。ただし、これには強くお勧めしません。呼び出されたデータを変更する述語は恐ろしいものです。

于 2012-09-27T19:59:20.977 に答える
1

List<T>1 extension method ForEach to remove the explicit loop. However, that requires that you convert yourIEnumerable to aList`を使用できます。

http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx

http://craigwatson1962.com/2010/10/08/using-the-foreach-method/

于 2012-09-27T19:04:10.730 に答える