是否有预先存在的函数将根据基数和"偏移量"返回一组数字?

B. *_*non 6 c# algorithm int

我不想重新发明轮子:如果我想从给定数字中得到N范围内的每个整数,那么最有效的方法是什么?

我的意思是这样的:

public List<int> getIntsWithinN(int BaseInt, int Offset)
Run Code Online (Sandbox Code Playgroud)

...如果传入的args是7和3,结果将是4..10; 如果传入的args是42和7,结果将是35..49等.

UPDATE

好的,我终于开始尝试实现这个了.但我不知道是否应该将我的List传递给ToList(),如下所示:

List<int> listInts = new List<int>();
. . .
Enumerable.Range(lineNum - Offset, Offset * 2 + 1).ToList(listInts);
Run Code Online (Sandbox Code Playgroud)

......或者这样做:

listInts = Enumerable.Range(lineNum - Offset, Offset * 2 + 1).ToList();
Run Code Online (Sandbox Code Playgroud)

...但我需要做的是多次调用,因此Intellisense描述看起来并不像我真正需要的那样.它说,"创建......列表..."

但我不希望每次都创建一个新的,我想要附加到现有的列表,并且最好同时忽略重复.

The*_*uin 13

我认为不会有这样的功能,但我认为这是最短和最简单的:

Enumerable.Range(BaseInt - Offset, Offset * 2 + 1).ToList()
Run Code Online (Sandbox Code Playgroud)


Cod*_*aos 1

最好同时忽略重复项

在这一点上你应该考虑HashSet<int>

var hashSet = new HashSet<int>();
hashSet.UnionWith(Enumerable.Range(lineNum - offset, offset * 2 + 1));
Run Code Online (Sandbox Code Playgroud)

如果你想要一份清单,可以在最后ToList()打电话。hashSet您可能还想在转换为列表时对其进行排序,因为HashSet<T>项目保持未定义的顺序。

var list = hashSet.OrderBy(i=>i).ToList();
Run Code Online (Sandbox Code Playgroud)