0

我有以下代码简介,它将选择我的 XML 中具有RatingNumericValue的所有数据元素,然后将该数据元素的值设置为 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 回答