如何将项目添加到 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;
      }