小编Nic*_*ick的帖子

使用Linq总结一个数字(并跳过其余部分)

如果我们有一个包含这样的数字的类:

class Person 
{
  public string Name {get; set;}
  public int Amount {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后是一群人:

IList<Person> people;
Run Code Online (Sandbox Code Playgroud)

那包含,比方说10个随机名称和数量的人是否有一个Linq表达式,它将返回一个Person对象的子集合,其总和满足条件?

例如,我想要第一个数量总和低于1000的x人.我可以通过传统方式做到这一点

 var subgroup = new List<Person>();

 people.OrderByDescending(x => x.Amount);

 var count = 0;
 foreach (var person in people)
 {
    count += person.Amount;
    if (count < requestedAmount)
    {
        subgroup.Add(person);
    }
    else  
    {
        break;
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是我一直想知道是否有一种优雅的Linq方式使用Sum做一些这样的事情然后像Take这样的其他功能?

UPDATE

这是太棒了:

var count = 0;
var subgroup = people
                  .OrderByDescending(x => x.Amount)
                  .TakeWhile(x => (count += x.Amount) < requestedAmount)
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

但我想知道我是否可以以某种方式进一步改变它以便抓住人员列表中的下一个人并将余数添加到总和中,以便总金额等于请求的金额.

c# linq

43
推荐指数
4
解决办法
3179
查看次数

如何在 docker 控制台应用程序中执行健康检查

我有一个 .net 2.2 核心控制台应用程序,它在 docker 容器中作为 HostedService 永久运行。它没有使用 ASPNet.Core,也不是 API,而是纯粹的 .net-core 应用程序。

启动时,它会执行许多健康检查,并在开始运行时执行。

我正在尝试编写蛋糕构建脚本并在 docker 中部署,并运行一些 mocha 集成测试。但是,集成步骤不会等待控制台应用程序完成其运行状况检查并且集成失败。

我阅读的所有健康检查指南都是针对 API 的。我没有 API,也没有端点。如何让 docker 等待控制台应用程序准备就绪?

提前致谢

docker cakebuild .net-core-2.2

10
推荐指数
1
解决办法
806
查看次数

如何在子页面中将Umbraco设置为默认值?

我有关于umbraco结构的这个问题,我无法在任何地方找到答案.

通常在Umbraco中,它会将根站点默认为树的第一个节点.所以,如果我们有

  • 家
    • 第1页
    • 第2页

默认页面将是主页(因此www.mysite.com将指向主页).

我如何改变这一点,以便www.mysite.com指向page1或page2?如果我有这个结构怎么办?

  • 包装纸
    • 指数
    • 第1页
    • 第2页

我希望www.mysite.com直接访问www.mysite.com/index.aspx

我找不到那样做的规则.尝试插入重写/重定向规则,它没有改变任何东西.

请帮忙

缺口

indexing redirect default structure umbraco

7
推荐指数
1
解决办法
8343
查看次数

在Javascript中拆分字符串的奇怪行为

我想做一些相对简单的事情.我有这种格式的日期dd/MM/yyyy例如:

var newDate = "?11?/?06?/?2015";
Run Code Online (Sandbox Code Playgroud)

我想将它转换为约会.

此代码仅适用于Chrome和Firefox:

new Date(newDate)
Run Code Online (Sandbox Code Playgroud)

在IE11中,我得到了 Nan

所以我想这样做:

var parts = newDate.split("/");
var year = parts[2].trim();
var month = parts[1].trim();
var day = parts[0].trim();
var dt = new Date(Number(year), Number(month) - 1, Number(day));
Run Code Online (Sandbox Code Playgroud)

哪个应该有效,但我遇到了一个非常奇怪的错误.

如果您尝试此代码:

function myFunction() {
  var newDate = "?11?/?06?/?2015";
  var parts = newDate.split('/');
  var year = parts[2].trim();

  var a = year;
  var b = Number(year);
  var c = parseInt(year, 10);
  var d = parts;
  var n = a + "<br>" + b + …
Run Code Online (Sandbox Code Playgroud)

javascript parseint internet-explorer-11

6
推荐指数
2
解决办法
1857
查看次数

如何在Umbraco的页面上显示母版的属性

我有一个umbraco项目,其中包含一个母版页(包含它自己的内容类型)和一个主页.

主页内容类型包括页脚,标题等内容.

但是,当我查看主页时,不会显示母版页的属性.在母版页模板中,我有一行:

<umbraco:Item field="footerText" runat="server" />
Run Code Online (Sandbox Code Playgroud)

但是这不会从主页属性中提取footerText属性.

我猜它与属性不是继承的事实有关,那么我们如何解决这个问题呢?编写一个简单的宏来提取数据还是有更快的方法?

非常感谢

inheritance templates master-pages umbraco

5
推荐指数
1
解决办法
4938
查看次数

mySQL获取某些行的所有可能组合

我在mySQL中有一个奇怪的请求.我发现通过添加更多联接,可以通过多种方式为组合或一些其他数字执行此操作,但我想知道是否有动态方法可以为任意数量的组合执行此操作.

解释我是否有一个表有1列(column_id)和(column_text)

Id | Text
--------
1  | A
2  | B
3  | B
4  | B
5  | A
Run Code Online (Sandbox Code Playgroud)

然后通过运行带参数A的过程GetCombinations应该产生:

CombinationId | Combinations
---------------------------
1             |      1
2             |      5
3             |      1,5
Run Code Online (Sandbox Code Playgroud)

通过运行带参数B的过程GetCombinations应该产生:

CombinationId | Combinations
---------------------------
1             |      2
2             |      3
3             |      4
4             |      2,3
5             |      2,4
6             |      3,4
7             |      2,3,4
Run Code Online (Sandbox Code Playgroud)

显然数字越大,我预计结果会呈指数增长.

这样的查询是否可能?我只能找到使用连接的结果,将每个结果的长度限制为连接数.

谢谢

UPDATE

我在这里找到了一篇文章,但组合的最大数量应该很小(最多20个左右).在我的情况与100组合,我估计它会产生:9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000099行(笑)

所以我将我的答案归类为不可行

但是有没有办法用最多2个组合得到这个结果?

CombinationId | Combinations
---------------------------
1             |      2
2 …
Run Code Online (Sandbox Code Playgroud)

mysql sql combinations

5
推荐指数
1
解决办法
1890
查看次数

Umbraco - 使用Razor渲染.Net用户控制(ascx)宏

我在Umbraco有一个非常复杂的剃刀脚本,我想在它的某个方面渲染一个宏.

名为SuggestionBox的宏实际上是一个用户控件(.ascx),传统上这是在模板上引用的

<umbraco:macro Alias="SuggestionBox" language="cshtml" runat="server"></umbraco:macro>
Run Code Online (Sandbox Code Playgroud)

但现在我需要从剃刀脚本中调用它,所以我尝试了;

@Html.Raw(umbraco.library.RenderMacroContent("SuggestionBox", Model.Id))
Run Code Online (Sandbox Code Playgroud)

以及:

@RenderPage("SuggestionBox")
Run Code Online (Sandbox Code Playgroud)

没错,到目前为止我确定我错误地使用了这些.

我在某处读到如果页面包含在母版页中可能是不可行的.

它可以工作,如果我像传统的那样将它添加到模板:

 <umbraco:macro Alias="EventsRenderer" language="cshtml" runat="server"></umbraco:macro>
 <div class="talkingPointPanel">
    <h3><umbraco:Item field="talkingPoinstSuggestionText" runat="server"></umbraco:Item></h3>
    <umbraco:macro Alias="SuggestionBox" language="cshtml" runat="server"></umbraco:macro>
 </div>
Run Code Online (Sandbox Code Playgroud)

EventsRenderer呈现理想情况下应包含SuggestionBox的页面.

运用

@Html.Raw(umbraco.library.RenderMacroContent("<?UMBRACO_MACRO macroAlias=\"SuggestionBox\" />", Model.Id))
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

<!-- Error generating macroContent: 'System.Web.HttpException (0x80004005): HtmlForm cannot render without a reference to the Page instance.  Make sure your form has been added to the control tree.

   at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)

   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)

   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)

   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) …
Run Code Online (Sandbox Code Playgroud)

macros render umbraco razor

4
推荐指数
1
解决办法
8576
查看次数

如果没有DTD,XML DocumentType方法CreateDocumentType崩溃.NET C#

我在生成需要自动生成的XML然后手动上载到客户端站点以进行验证时遇到问题.

客户的规范要求我们在顶部包含DTD声明.那是

<!DOCTYPE TheFile System "TheDTD.dtd" ""> 
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试生成XML行时,以编程方式

    XmlDocumentType doctype;
    doctype = doc.CreateDocumentType("TheFile", null, "TheDTD.dtd", null);
    doc.AppendChild(doctype);
Run Code Online (Sandbox Code Playgroud)

失败并且它问我"TheDTD.dtd"应该存在于windows目录中:C:\ Windows\System32\inetsrv

后来如果我想读取XmlDoc那一行

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlLocation);
Run Code Online (Sandbox Code Playgroud)

失败并且它询问我"TheDTD.dtd"应该存在于存储整个项目的Project目录中

我不想实际验证DTD,我只是想引用,因为验证发生在客户端.有没有办法在XML中添加行""而不必在两个不同的位置复制实际的.dtd?

如果我们公开声明并将其更改为

 <!DOCTYPE TheFile PUBLIC "TheDTD.dtd" ""> 
Run Code Online (Sandbox Code Playgroud)

然后一切正常,但客户要求它应该是SYSTEM而不是PUBLIC.我希望如果实际的.dtd丢失,CreateDocumentType和Load方法不会崩溃,因为此时我甚至没有这个文件而且我的目的不需要它.

谢谢

c# xml doctype xmldocument dtd

4
推荐指数
1
解决办法
3466
查看次数

在Jquery中如何在提交之前使用回调运行代码

我需要在提交表单之前运行一些jquery代码,似乎存在一些问题.

在你急于推荐之前,请听我说:

$(function() {
     $('form').submit( function() {
         /* some code */
         return true;
     });
});
Run Code Online (Sandbox Code Playgroud)

我需要在按下"提交"按钮后首先使用谷歌API计算地址的经度和纬度变量,然后提交表格.这需要在回调函数中监听响应.

到目前为止我的代码看起来像这样:

  $("form input:submit").click(function(e){
      e.preventDefault();
      var address = $(this).find('.address').val();
      geocoder.geocode( { 'address': unescape(address)}, function(results, status) 
      {
          if (status == google.maps.GeocoderStatus.OK) 
          {
            $(".latSelector input:hidden").val(results[0].geometry.location.lat());
            $(".lngSelector input:hidden").val(results[0].geometry.location.lng());
            $("form").submit();
          }
       });  
  });
Run Code Online (Sandbox Code Playgroud)

如果我使用"submit"函数执行相同的操作,则表单会在触发回调函数之前提交,并且后面的代码将以缺失值执行.

如果我在按钮上使用"click"事件(如上面的代码并手动提交),则代码会正确执行,但提交不会触发表单后面的代码.

我认为我接近这个工作,但我找不到运行代码,处理回调值然后正确提交表单的神奇组合,以便执行后面的代码.

jquery events click callback submit

4
推荐指数
1
解决办法
2万
查看次数