【发布时间】:2021-10-26 07:10:15
【问题描述】:
public IEnumerable<ComputedData> Compute (IEnumerable<DataSet> data, IEnumerable<Variations> variationData)
{
// I need to create one ComputedData instance for each item inside the IEnumerable<DataSet> data
// DataSet has properties: int ID, int Valu1, int Value2
// ComputedData has properties: int ID, int Result, int Variation
// variationData has properties: int ID, int Variation
var computedDate = data.Select (i => new ComputedData ()
{
ID = i.ID,
Result = i.value1 + i.value2
});
// ISSUE is here
foreach (var item in computedDate )
{
var id = item.ID;
// I need to find the corresponding element
// (with same ID) on IEnumerable<Variations> variationData
// and assign item.Variation =
// But getting Possible Multiple Enumeration warning
// and item.Variation become zero always !
}
}
问题是foreach循环的使用。有没有其他方法可以解决这个问题。即使代码正常工作, item.Variation 始终为零。不应该是这样的。 有什么建议吗?
【问题讨论】:
-
我建议使用
ToDictionary而不是ToList,因为您需要通过 id 查找元素。它将复杂度从 n^2 降低到 n -
@JL0PD:但他需要返回
IEnumerable<ComputedData> -
为源和预期结果集合提供两个或三个示例值将非常有助于找到所需的解决方案。
标签: c#