小编Cha*_*ace的帖子

较低兼容级别的 string_split 函数的替代方案

对于兼容性级别问题,我无法使用 string_split 函数。我知道如何更改兼容性级别。但对于数据库的快速发展来说,如果旧功能失效就会存在一定的风险。

现在,兼容级别 110 中是否有 string_split 函数的替代方案?

或者如果我想定义它,函数会是什么?

t-sql sql-server split

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

SerialPort BaseStream ReadAsync - CancellationToken 从未取消?

我尝试以异步方式从串行端口读取数据,请记住操作所花费的时间不得超过指定的时间段。我使用的代码:

private async Task<int> Read(byte[] buffer, int offset, int length)
    {
        Console.WriteLine("Reading response to buffer of size {0}, offset {1}, max to cnt {2}", buffer.Length, offset, length);

        int totalBytesRead = 0;

        Console.WriteLine("Begin reading...");

        while (true)
        {
            Console.WriteLine("Re-entering read");

            int bytesRead = 0;

            using (CancellationTokenSource cts = new CancellationTokenSource(new TimeSpan(0, 0, 0, 0, 333))) // 333 ms
            {
                Console.WriteLine("Waiting for read to complete...");

                int tmpOffset = offset + totalBytesRead;
                int tmpLength = length - totalBytesRead;
                Console.WriteLine("tmpOffset: {0}, tmpLength: {1}", tmpOffset, tmpLength); …
Run Code Online (Sandbox Code Playgroud)

c# serial-port cancellationtokensource cancellation-token

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

如何禁用自动实现属性的 NotImplementedException?

每当我生成自动实现的属性时,我在 C# 自动实现“NotImplementedException”时遇到问题。

这是接口类:

public interface IPerson
{
    string Name {get;set;}
    int Age {get; set;}
    char Gender {get; set;}
    string Email {get;set;}
    string Address {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这是派生类。每当我尝试实现派生类的接口时,它都会自动实现“NotImplementedException”方法。

public class Student : IPerson
{
    public Student()
    {

    }

    public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
    public int Age { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
    public char Gender { get => throw new NotImplementedException(); set => throw new …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio

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

enum 到 int 拆箱了吗?

enum Season { spring, summer, fall, winter }
int a = (int)Season.spring;
Run Code Online (Sandbox Code Playgroud)

这是拆箱还是普通的铸造?如果这是拆箱,您能解释一下原因吗?我认为这只是一个正常的转换,因为“enum”和“int”都是值类型数据。

c# enums boxing unboxing

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

HttpClient.GetAsync 对某些网站返回奇怪的结果

请考虑这个简单的代码:

private async void button3_Click(object sender, EventArgs e)
{
    textBox1.Text = "It begins...";
    await DoAsync_Button3();
}

private async Task DoAsync_Button3()
{
    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync("https://www.stackoverflow.com/");
    response.EnsureSuccessStatusCode();
    string responseBody = await response.Content.ReadAsStringAsync();
    textBox1.Text = responseBody;
}
Run Code Online (Sandbox Code Playgroud)

和简单的用户界面:

在此输入图像描述

问题是对于某些网站我得到了一些奇怪的结果。例如:https: //www.dotnetperls.com/

我得到这个结果:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我得到了奇怪的结果,而StatusCode200。我如何确定问题出在哪里?谢谢

c# compression httpclient

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

为什么这个执行计划中排序运算符的成本如此之高?

执行计划

Sort运算表示只有 100 行需要排序。这怎么可能比读取 190 万行更昂贵呢?我一定是读错了或者误解了某些东西。

另外,排序运算符中每次执行的估计行数为何只有 100?如果Index Seek运算符估计每次执行的行数为 190 万行,那么如何仅将 100 行传送到 Sort 运算符呢?

这是查询:

    DECLARE @PageIndex INT = 1000;
    DECLARE @PageCount INT  = 1000;

    SELECT  ID
    FROM    dbo.Table1
    WHERE DateCreated >= '2021-10-27'
            AND
        DateCreated < '2021-10-28'
    ORDER BY ID
        OFFSET @PageIndex * @PageCount ROWS FETCH NEXT @PageCount ROWS ONLY 
Run Code Online (Sandbox Code Playgroud)

sql-server query-optimization

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

SQL 错误的百分比计算

我目前正在编写一份小报告,我必须创建目标百分比的数字,但是我编写的查询似乎显示了错误的百分比计算,我不完全确定为什么。查询已删除所有敏感信息;

SELECT  YearMonth
, Code
, COUNT(*) AS Total
, (COUNT(*) / 100 * 2) AS 'Q1 Target'
, (COUNT(*) / 100 * 3) AS 'Q2 Target'
, (COUNT(*) / 100 * 4) AS 'Q3 Target'
, (COUNT(*) / 100 * 5) AS 'Q4 Target'
FROM xxx
LEFT JOIN Calendar AS C ON Date = xxx
WHERE code IN (xxx)
and xxx BETWEEN '20220301' AND '20220331'
GROUP BY YearMonth, code
Run Code Online (Sandbox Code Playgroud)

返回的结果是;

正如您所看到的,第一行总共有 611 个,其中 2% 是 12 个,这是正确的。但是,如果您查看第 3 行,您可以看到总数为 …

sql t-sql sql-server

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

当用户超过每日传输限制时,正确的 HTTP 状态代码是什么?

每个用户都有每日信用额度。

如果用户超出每日限制,HTTP 状态代码将显示在此处。

403 -禁止或 200 -成功(带有验证结果)

c# rest http-status-codes http-status-code-403 http-status-code-429

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

这个 C# 接口语法叫什么以及它的含义是什么

我正在开发一组相当复杂的接口,它允许定义具有特定结构的对象。通过接口和泛型,它还允许我定义每个元素中可用的接口组合。该结构映射了我们背景中的某些内容,因此目标是在代码中重新创建结构,以便更好地理解代码实际操作的内容。

结果如下:

static void Main(string[] args)
{

  IComplexDefinition1 CD1 = null;
  
  CD1.Access.Level1.ElementB.SomeStructrueMethod();
  CD1.Access.Level1.ElementC.ActorAMethod1();
  CD1.Access.Level1.ElementC.ActorBMethod2();
  CD1.Access.Level1.ElementC.ActorCMethod1();

  CD1.Access.Level2.ElementA.SomeOperationPoolMethod();
  CD1.Access.Level2.ElementC.ActorAMethod2();
  CD1.Access.Level2.ElementC.ActorBMethod1();
  CD1.Access.Level2.ElementC.ActorCMethod2();

}
Run Code Online (Sandbox Code Playgroud)

现在,在实现具体类时,我在 Visual Studio 中单击了“自动实现”,它出现了一行我到目前为止还没有看到的代码(并且没想到会发生这种情况)。因此,我正在寻找它的工作原理以及我可以在哪里阅读/研究更多相关信息的见解。

具体实现的相关部分是:

public class ComplexDefinition : IComplexDefinition1,....
{

  protected IActorComposition _actors;
  protected SomeStructure _structure;
  protected SomeOperationPool _operationPool;

  public IElementsBC<IActorCompositionLevel2, SomeStructure> Level1 => this;
  public IElementsAC<IActorCompositionLevel1, SomeOperationPool> Level2 => this;
  
  public SomeStructure ElementB => _structure;
  public SomeOperationPool ElementA => _operationPool;

  public IActorCompositionLevel2 ElementC => _actors;
  IActorCompositionLevel1 IElementC<IActorCompositionLevel1>.ElementC => _actors;

}
Run Code Online (Sandbox Code Playgroud)

尤其是这两行让我感到困扰(尤其是最后一行):

public IActorCompositionLevel2 ElementC => _actors;
IActorCompositionLevel1 IElementC<IActorCompositionLevel1>.ElementC …
Run Code Online (Sandbox Code Playgroud)

c# interface explicit-interface

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

带有“FOR JSON PATH”子句的 SQL Server 数据屏蔽错误

我正在使用 SQL Server Standard(64 位)14.0.1000.169 在 QA 服务器上使用屏蔽数据库。这是我的结构:

    CREATE TABLE [dbo].[Test](
         [Column1] [VARCHAR(64)] NULL,
         [Column2] [VARCHAR(64)] NULL
    )
    GO
    INSERT INTO [dbo].[Test]
    VALUES ('ABCDEFG', 'HIJKLMN')
Run Code Online (Sandbox Code Playgroud)

我用以下代码屏蔽了该列:

    ALTER TABLE [dbo].[Test]
    ALTER COLUMN [Column1] VARCHAR(64) MASKED WITH (FUNCTION = 'default()');
Run Code Online (Sandbox Code Playgroud)

当我使用非允许的用户执行以下查询时,它按预期工作:

    SELECT [Column1], [Column2]
    FROM [dbo].[Test]
    FOR JSON PATH
    -- RESULT: '[{"Column1":"xxxx", "Column2":"HIJKLMN"}]'
Run Code Online (Sandbox Code Playgroud)

但当同一个非允许用户将结果保存在变量中时(主要目标),它不起作用:

    DECLARE @var VARCHAR(64)
    SET @var = (SELECT [Column1], [Column2] FROM [dbo].[Test] FOR JSON PATH)
    SELECT @var --it should show a valid JSON...
    -- RESULT: 'xxxx' <-- JSON LOSES …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server for-xml-path for-json dynamic-data-masking

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