如何将项目添加到 IEnumerable<(T item, int?number)>?
How can I add an item to a IEnumerable<(T item, int? number)>?
所以,我有方法:
public static IEnumerable<(T item, int? number)> DoTheThing<T>(this IEnumerable<T> enumerable, int? someNumber)
基本上,在某些情况下,我需要 return 从带有附加数字的参数中收集数据。
我创建了空集合来存储数据,同时通过 foreach
:
形成最终结果
IEnumerable<(T item, int? number)> enumResult = Enumerable.Empty<(T item, int? number)>();
但我不知道如何给 enumResult
添加值。
唯一我不能改变的 - 方法签名,所以也许我完全做错了。
接口的要点是你不需要知道列表的来源,只需要枚举即可。可能是方法 returns 一个列表,即时计算元素或一次从 Internet 读取它们。
要添加值,您需要确保使用 List<T>
:
var enumResult = new List<(T item, int? number)>();
enumResult.Add(...);
请注意 List
也是 IEnumerable
,因此您仍然可以在需要 IEnumerable
的地方使用 enumResult
。
怎么样
public static IEnumerable<(T item, int? number)> DoTheThing<T>(this IEnumerable<T> enumerable, int? someNumber){
foreach (T val in this){
yield return val;
}
if(someNumber.HasValue)
yield return someNumber.Value;
}
所以,我有方法:
public static IEnumerable<(T item, int? number)> DoTheThing<T>(this IEnumerable<T> enumerable, int? someNumber)
基本上,在某些情况下,我需要 return 从带有附加数字的参数中收集数据。
我创建了空集合来存储数据,同时通过 foreach
:
IEnumerable<(T item, int? number)> enumResult = Enumerable.Empty<(T item, int? number)>();
但我不知道如何给 enumResult
添加值。
唯一我不能改变的 - 方法签名,所以也许我完全做错了。
接口的要点是你不需要知道列表的来源,只需要枚举即可。可能是方法 returns 一个列表,即时计算元素或一次从 Internet 读取它们。
要添加值,您需要确保使用 List<T>
:
var enumResult = new List<(T item, int? number)>();
enumResult.Add(...);
请注意 List
也是 IEnumerable
,因此您仍然可以在需要 IEnumerable
的地方使用 enumResult
。
怎么样
public static IEnumerable<(T item, int? number)> DoTheThing<T>(this IEnumerable<T> enumerable, int? someNumber){
foreach (T val in this){
yield return val;
}
if(someNumber.HasValue)
yield return someNumber.Value;
}