获取下500个“免费”号码 - c#

我有一个数字数组,表示使用的位置。我想从数字1到任何数字获取前500个未使用的数字。

例如,我的数组包含以下数字:1,2,5,6,8,9

基于该数组,我想创建一个包含以下数字的新数组:3,4,7,10,11,12,13,14 .... 500,501,502,503,504,505,506,507

有没有比增加循环数更有效的方法,请检查默认数组是否包含该数字,如果未将其放入新数组,请检查新数组是否具有500个值,然后中断循环?

谢谢!

参考方案

我建议实现生成器:

// source should be sorted
private static IEnumerable<int> Free(IEnumerable<int> source) {
  int last = 0;
  bool first = true;

  foreach (var item in source) {
    if (first) 
      first = false;
    else 
      for (int i = last + 1; i < item; ++i) // <- Hole 
        yield return i;

    last = item;
  }

  // The array exhausted
  for (int i = last + 1; ; ++i)
    yield return i;
}

然后在Linq的帮助下生成任意数量的项目

int[] used = new[] { 1,2,5,6,8,9};

int[] free = Free(used)
  .Take(501) // <- if you want 507 being the last item you have to take 501 items
  .ToArray();

Console.Write(string.Join(", ", free));

结果:

3, 4, 7, 10, 11, 12, 13, 14, ..., 505, 506, 507

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

ASP.NET Core Singleton实例与瞬态实例的性能 - c#

在ASP.NET Core依赖注入中,我只是想知道注册Singleton实例是否会比注册Transient实例更好地提高性能?在我看来,对于Singleton实例,创建新对象和相关对象只需花费一次时间。对于Transient实例,此成本将针对每个服务请求重复。因此Singleton似乎更好。但是,在Singleton上使用Transient时,我们可以获得多…

asp.net mvc或javascript将另一页的结果返回给方法 - c#

是否可以将另一个页面的结果返回给JavaScript方法或C#控制器操作?我有一个共享的复杂页面,该页面在我的网站上遍布使用,当前用于在C#后端的用户数据上设置单个变量。当用户完成共享的复杂页面后,我将返回引用页面。当用户在刷新或返回时将其作为url参数传递给返回的页面时,我返回的页面包含新选择的变量。我有一个新页面,我希望从我的共享复杂页面中返回该变量。但…

ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …