索引处的 IEnumerable 更新
IEnumerable Update At Index
我必须更新 IEnumerable 集合中的一个值。因为它是只读的,更新值的技巧是什么?
product.Variants 是一个 IEnumerable,我想更新这样的东西
product.Variants[0].条形码 ="某物"
当前我收到这样的错误
然后我将 product 变量传递给一个函数,该函数对 product.Variants
进行一些处理
someFunction (product) // 这个函数应该有上面更新的新条形码。
Error CS0021 文档说:
An attempt was made to access a value through an indexer on a data
type that does not support Indexers.
就这么简单。 IEnumerable 仅公开枚举器而不是基础数据。如果您想访问该数据,您需要将 IEnumerable“具体化”到其数据集合中。
var list = product.Variants.ToList();
if(list.Count > 0)
{
ProductVariant pv = list[0];
....
}
但这会“具体化”整个列表,如果您只需要第一项,您可能只需使用 IEnumerable 扩展名 FirstOrDefault;
var pv = product.Variants.FirstOrDefault();
if(pv != null)
{
.....
}
我必须更新 IEnumerable 集合中的一个值。因为它是只读的,更新值的技巧是什么?
product.Variants 是一个 IEnumerable,我想更新这样的东西
product.Variants[0].条形码 ="某物"
当前我收到这样的错误
然后我将 product 变量传递给一个函数,该函数对 product.Variants
进行一些处理someFunction (product) // 这个函数应该有上面更新的新条形码。
Error CS0021 文档说:
An attempt was made to access a value through an indexer on a data type that does not support Indexers.
就这么简单。 IEnumerable 仅公开枚举器而不是基础数据。如果您想访问该数据,您需要将 IEnumerable“具体化”到其数据集合中。
var list = product.Variants.ToList();
if(list.Count > 0)
{
ProductVariant pv = list[0];
....
}
但这会“具体化”整个列表,如果您只需要第一项,您可能只需使用 IEnumerable 扩展名 FirstOrDefault;
var pv = product.Variants.FirstOrDefault();
if(pv != null)
{
.....
}