小编Lea*_*Dev的帖子

应该避免使用IEnumerable的Count()吗?

一般情况下,我使用a List然后返回它们,IEnumerable因为我不再需要更新它们.

但是,我遇到了一个问题,我实际上需要通过它们进行枚举,但首先需要知道计数.

IEnumerable枚举每个项目并找到计数(O(N)),还是依赖于ListCount属性(O(1))?

另外,如果IEnumerable是LINQ查询的结果怎么办?

c# linq ienumerable

13
推荐指数
1
解决办法
254
查看次数

绑定重定向被添加到每个app.config

我在解决方案文件中有20个项目.其中1个项目是所有项目都参考的标准库项目.

大约一年前,我们添加了一个新的nuget包,我们称之为Package A5.0.0.0版.它有一堆文件,它们会在编译时全部转移,但我们最终处理它.我们将包添加到我们的标准库项目(另一个参考的那个).

我是Nuget的新手(所以也许我做错了)所以我做了一个新包作为帮助Package A.我已经设置了所有内容,以便帮助程序依赖于Package A版本3.0.0.0到5.0.0.0(因此它适用于版本低于我们的其他人).让我们称这个新包Package A helper

我安装Package A helper,一切正常.我去做拉取请求,现在我们的解决方案中的每个app.config都有

<runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
              <dependentAssembly>
                      <assemblyIdentity name="Package.A" publicKeyToken="8FC3CCAD86" culture="neutral"/>
                      <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
              </dependentAssembly>
      </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

如果没有它,它将编译正常,但视觉工作室抱怨并发出警告.是什么赋予了?我的经理现在不会让我合并我的代码,因为它会给app.config增加太多噪音,并且过分依赖于Package A.

为什么Package A在我们安装之前已经满足主要依赖关系的时候添加依赖的nuget包必须拥有这个新的bindingRedirect Package A Helper

当我在nuget包和package.config中指定3.0.0.0-5.0.0.0时,为什么会说0.0.0.0-5.0.0.0

更新:

当我Package A helper使用对Package A5.0.0.0版的引用构建时,所有bindingRedirects都不会在每个app.config中自动填充,而是生成警告.我最初用3.0.0.0构建它,因为我认为最好用最低的依赖构建它.问题仍然存在,因为visual studio仍然警告并建议创建bindingRedirects.

No way to resolve conflict between "Package A, Version=5.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33" and "Package A, Version=3.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33". Choosing "Package A, Version=5.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33" arbitrarily.
Consider …
Run Code Online (Sandbox Code Playgroud)

c# assemblybinding visual-studio nuget assembly-binding-redirect

9
推荐指数
1
解决办法
3565
查看次数

将 C# 类转换为 SQL 表

我能找到的唯一参考是有人建议使用实体框架来做到这一点,但我没有或使用实体框架。关于这个主题的唯一另一件事是从 SQL 表转到 C# 类,这与我想要的相反。

这不必与 TSQL/MSSQL (2014) 兼容,但那是我的 DBMS。

C# 类只是一个 POCO。我想我听说您可以参加该课程并以某种方式将其转换为 DataTable,然后使用 SqlBulkCopy 让它从 DataTable 创建一个表。

这就是我目前正在使用的,它使用 SELECT INTO 并将空值转换为 sqlType 以生成可为空的列。正如您所看到的,它非常原始,但主要完成了工作 - 我正在寻找不易出错的方法。

        var columnNames = GetColumnsToBeUpdated<T>().ToList();
        var columnTypes = GetColumnsTypesToBeUpdated<T>().ToList();


        var selects = columnNames.Select((t, i) => $"CAST(NULL as {columnTypes[i]}) AS [{t}]");

        var createsql = $@"
            SELECT {string.Join(", ", selects)}
            INTO SDE.[{tableName}]";

        using (var connection = new SqlConnection(_sdeConnectionString))
        {
            EsriServer.ExecuteNonQuery(connection, $"IF OBJECT_ID(N'SDE.[{tableName}]', N'U') IS NOT NULL " +
                                                   $"DROP TABLE SDE.[{tableName}]", null);
            EsriServer.ExecuteNonQuery(connection, createsql, null); …
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server

8
推荐指数
1
解决办法
7047
查看次数

NUnit TestFixure和SetUp的嵌套TransactionScope

我派生自这个基类,以便将每个单独的测试封装到一个回滚的事务中

public abstract class TransactionBackedTest
{
    private TransactionScope _transactionScope;

    [SetUp]
    public void TransactionSetUp()
    {
        var transactionOptions = new TransactionOptions
        {
            IsolationLevel = IsolationLevel.ReadCommitted,
            Timeout = TransactionManager.MaximumTimeout
        };

        _transactionScope = new TransactionScope(TransactionScopeOption.Required, 
                                                 transactionOptions);
    }

    [TearDown]
    public void TransactionTearDown()
    {
        _transactionScope.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个我也尝试以相同的方式设置TestFixure事务:

[TestFixture]
class Example: TransactionBackedTest
{

    private TransactionScope _transactionScopeFixure;


    [TestFixtureSetUp]
    public void Init()
    {
        var transactionOptions = new TransactionOptions
        {
            IsolationLevel = IsolationLevel.ReadCommitted,
            Timeout = TransactionManager.MaximumTimeout
        };

        _transactionScopeFixure = new TransactionScope(TransactionScopeOption.Required,
                                                       transactionOptions);


        SetupAllDataForAllTest();
    }

    [TestFixtureTearDown]
    public void FixtureTearDown()
    { …
Run Code Online (Sandbox Code Playgroud)

c# sql nunit unit-testing transactions

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

将空数组发送到webapi

我想将一个空的javascript数组POST []到webAPI并让它创建一个空的整数列表.我也想要它,所以如果我将javascript发布null到webAPI,它将null分配给整数列表.

JS:

var intArray = [];
$.ajax({
    type: 'POST',
    url: '/api/ListOfInts',
    data: {'' : intArray},
    dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)

c#webapi

[HttpPost]
public void ListOfInts([FromBody]List<int> input)
Run Code Online (Sandbox Code Playgroud)

问题1)Jquery拒绝发送数据{'' : []}作为后有效负载.只要我在数组中添加一些内容就可以了{'' : [1,2,3]}

问题2)将 空的js数组传递给控制器​​会给出null基于我读到的内容,即使我将它发布为空数组,它也会将列表初始化为null.讨论的解决方案有它,所以列表总是初始化为空,但我不希望这样.我希望它在某些情况下为null(当发送null/undefined时),并且在[]发送时它应该初始化为空.

编辑:请参阅https://www.asp.net/web-api/overview/advanced/sending-html-form-data-part-1,了解我使用的原因{'' : []}

javascript c# asp.net jquery asp.net-web-api

7
推荐指数
2
解决办法
3743
查看次数

谷歌图表在材料中的图例页面

我希望在新的 google chars API 上获得图例分页。我以前看到它是可能的,但现在找不到任何文档。

如果不再可能,我怎样才能让我的折线图图例扩展图表 div?

我将 div 设置为 min-height: 400px 并且它强制 SVG 为 400px 并且不调整 div 的大小。

我制作了这个超级快速的演示,展示了 35 个图例,您可以看到它是如何将它们切断的。我要么希望它允许一些分页,要么根据需要扩展图表的大小,或者显示第二列图例。

https://jsfiddle.net/4y800onc/

如果您切换到经典模式,您会看到它尝试了一个非常奇怪的水平图例分页。不幸的是我无法切换到经典模式(我的应用程序依赖于材料模式)

  google.charts.load('current', {
    'packages': ['line', 'corechart']
  });
  google.charts.setOnLoadCallback(drawChart);

  function drawChart() {

    var button = document.getElementById('change-chart');
    var chartDiv = document.getElementById('chart_div');

    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Month');
    data.addColumn('number', "Average Temperature");
    data.addColumn('number', "Average Hours of Daylight");
    data.addColumn('number', "Average Hours of Daylight");
    data.addColumn('number', "Average Hours of Daylight");
    data.addColumn('number', "Average Hours of Daylight");
    data.addColumn('number', "Average Hours of Daylight");
    data.addColumn('number', "Average Hours …
Run Code Online (Sandbox Code Playgroud)

charts linechart google-visualization

5
推荐指数
0
解决办法
397
查看次数

完全恢复拉取请求

master过去一个月一直在研究Current 。一个名为的分支contract也在同时进行。

contractmaster错误地合并了。100 次提交,日期与master已经存在的提交重叠。

我怎样才能完全删除所有合并提交100从拉入请求contractmaster

我们对拉取请求进行了 GitHub 恢复,并删除了代码但没有删除历史记录。现在,当我们尝试执行合并contractmaster其中的模拟拉取请求时,显示没有任何更改。(我假设是因为那些提交已经进入但被恢复了?)

master除了还原之外,合并后没有任何提交。

如何完全删除拉取请求添加的任何提交,并在我们最终合并contractmaster.

git merge github git-revert

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

从另一个运行构建配置

我想做一个构建配置,部署到我们的开发服务器并运行每个测试(快速和简短)。

我有一个用于进行生产部署(无测试)的构建配置,但我想修改它,以便生产部署首先触发带有测试的开发部署,然后继续进行生产部署。

我不想将 dev deploy/testing 放在生产配置中,我希望它触发另一个配置并在该配置失败时取消。

这能做到吗?

teamcity

3
推荐指数
1
解决办法
1097
查看次数