我有以下 c# 代码:
private XElement BuildXmlBlob(string id, Part part, out int counter)
{
// return some unique xml particular to the parameters passed
// remember to increment the counter also before returning.
}
由以下人员调用:
var counter = 0;
result.AddRange(from rec in listOfRecordings
from par in rec.Parts
let id = GetId("mods", rec.CKey + par.UniqueId)
select BuildXmlBlob(id, par, counter));
上面的代码示例象征着我想要实现的目标。
根据 Eric Lippert 的说法,out 关键字和 linq 不能混合使用。好吧,很公平,但是有人可以帮我重构上面的内容,让它起作用吗?工作中的一位同事提到了累加器和聚合函数,但我是 Linq 的新手,而且我的谷歌搜索结果有任何真正的成果,所以我想我会在这里问:)。
澄清:
我正在计算每次调用代码时我可能拥有的部件数量,这些部件数量可能是任意数量。因此,每次调用 BuildXmlBlob() 方法时,生成的 xml 都会有一个唯一元素,表示“partNumber”。
因此,如果计数器当前位于 7,这意味着我们目前正在处理第 7 部分!这意味着从 BuildXmlBlob() 返回的 XML 将在某处嵌入计数器值。这就是为什么每次运行时每次调用 BuildXmlBlob() 时我都需要以某种方式传递和递增它。