小编Tom*_*ora的帖子

与LINQ相比,为什么Array.Sort()这么慢?

我做了快速测试应用程序,将LINQ排序与我的自定义对象上的Array.Sort进行比较.Array.Sort似乎非常慢!

我创建了这样的自定义类:

class Person : IComparable<Person>
{
    public int Age { get; set; }
    public string Name { get; set; }

    public int CompareTo(Person obj)
    {
        return this.Age.CompareTo(obj.Age);
    }

    public Person()
    { }

}
Run Code Online (Sandbox Code Playgroud)

然后我在main()中做了我的测试人员:

string name = "Mr. Tomek";

Random r = new Random();
int size = 10000000;

DateTime start, end;
Person[] people1 = new Person[size];
Person[] people2 = new Person[size];

for (int i = 0; i < size; i++)
{
     people1[i] = new Person();
     people1[i].Age = r.Next(0, 10000); …
Run Code Online (Sandbox Code Playgroud)

c# linq arrays sorting

22
推荐指数
3
解决办法
2884
查看次数

如何从 Windows 中删除 wsl 发行版?

我在 Windows 10 上安装了 docker Desktop。然后我发现了 WSL。写完命令后,wsl -l -v我看到我有 2 个发行版:

docker-desktop-data
docker-desktop
Run Code Online (Sandbox Code Playgroud)

我还从 Microsoft Store 安装了 Ubuntu 20.04,现在我也有了

Ubuntu-20.04
Run Code Online (Sandbox Code Playgroud)

现在我想摆脱这两个。我不需要那么多。我知道 docker-desktop-data 包含图像 docker-desktop 包含 docker 基础设施。但对我来说仍然不清楚并且令人困惑。我只想将 Ubuntu-20.04 用于我的 docker 实验。

我该如何删除这些?

在此输入图像描述

docker windows-subsystem-for-linux docker-desktop

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

MediatR 库在网络上的 CQRS 示例中是否过度使用?

我很难理解为什么网络上有这么多示例在解释 CQRS 模式、处理命令和查询时都使用 MediatR。

几乎在所有地方,我都看到由 MediatR 处理命令和查询的示例,但除了不需要在依赖注入容器中注册每个命令或查询之外,我没有看到它有任何好处。但随后您需要实现查询对象(继承 IRequest)、查询处理程序和查询响应对象,以便您可以在 API 控制器方法中调用_mediatr.Send(queryObject).

为什么不直接使用依赖注入将查询对象注入到 API 控制器中,您可以直接在其上调用“get”方法?喜欢:

[HttpGet]
[Route("getall")]
public async Task<IncidentQueryResult> GetAll(int page = 0, int pageSize = 25)
{
    var result = await _incidentQueries.GetIncidents(page, pageSize);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

代替:

[HttpGet]
[Route("getall")]
public async Task<IncidentQueryResult> GetAll(int page = 0, int pageSize = 25)
{
    var query = new IncidentQuery(page, pageSize);
    var result = await _mediatr.Send(query);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然后,在该GetIncidents方法内部,对数据库进行直接 sql 调用,并将结果映射到 C# 对象。干净利落。

对我来说,MediatR 库的完美且唯一合理的使用是处理领域事件。 在实现 DDD 时,我尝试按照下面介绍的方式建立一个项目。每个矩形都是解决方案中的一个不同项目。箭头代表参考:

带有 CQRS 架构的 DDD

让我们想象一个场景:创建一个域对象需要增加存储在另一个域对象(不同的聚合)中的计数器 …

.net c# domain-driven-design cqrs mediatr

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

如何在我的 asp.net core 3.1 应用程序中播种用户和角色?

我尝试protected override void OnModelCreating(ModelBuilder builder)在我的 IdentityDataContext 类中使用并创建一个迁移来播种这些数据:

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
        const string ADMIN_ID = "b4280b6a-0613-4cbd-a9e6-f1701e926e73";
        const string ROLE_ID = ADMIN_ID;
        builder.Entity<IdentityRole>().HasData(new IdentityRole
        {
            Id = ROLE_ID,
            Name = "admin",
            NormalizedName = "ADMIN"
        });
        builder.Entity<MyIdentityUser>().HasData(new MyIdentityUser
        {
            Id = ADMIN_ID,
            UserName = "myemail@myemail.com", …
Run Code Online (Sandbox Code Playgroud)

c# authorization roles asp.net-core asp.net-core-3.1

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

具有“如果键不在字典中则添加新值”的多维字典

SO上也有类似的问题,但没有一个回答我的问题。

我想要一个二维词典来翻译。像这样的东西:

Dictionary["DE"][TranslationKeys.Title] = "Title in German";
Dictionary["DE"][TranslationKeys.SubTitle] = "Subtitle in German";
Dictionary["PL"][TranslationKeys.Title] = "Title in Polish";
Dictionary["PL"][TranslationKeys.SubTitle] = "Subtitle in Polish";
Dictionary["EN"][TranslationKeys.Title] = "Title in English";
Dictionary["EN"][TranslationKeys.SubTitle] = "Subtitle in English";
Run Code Online (Sandbox Code Playgroud)

如果我使用传统字典就好了Dictionary<string,Dictionary<TranslationKeys,string>>

但我不想以这样的“丑陋”方式初始化它:

Dictionary = new Dictionary<string,Dictionary<TranslationKeys,string>>(){
                {"PL",new Dictionary<TranslationKeys,string>(){{TranslationKeys.SubTitle,"Subtitle in Polish"}}}
            };
Run Code Online (Sandbox Code Playgroud)

但像这样:

Dictionary["PL"][TranslationKeys.SubTitle] = "Subtitle in Polish";
Run Code Online (Sandbox Code Playgroud)

所以我尝试实现一个“智能”多维字典,如果他得到了值,它就会自行计算出来。到目前为止我所做的是一个使用 Dictionary 和特殊索引器的新通用类:

public class TranslateDictionary<TKey, TValue> where TValue : new()
{
    private Dictionary<TKey, TValue> Dictionary;
    public TValue this[TKey lang]
    {
        get
        {
            if (!Dictionary.ContainsKey(lang))
            {
                TValue obj …
Run Code Online (Sandbox Code Playgroud)

c# dictionary initialization

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

您是否可以像.NET一样在javascript中获取文化信息字符串?

我需要从浏览器的语言中获取文化字符串。

我考虑过从javascript这样获取代码:

var userLang = navigator.language || navigator.userLanguage;
Run Code Online (Sandbox Code Playgroud)

但这只给了我从.NET获得的文化信息的第一部分:

Thread.CurrentThread.CurrentCulture.Name;
Run Code Online (Sandbox Code Playgroud)

因此,javascript为我提供了“ de”或“ pl”,而不是.NET中的“ de-DE”或“ pl-PL”。有没有办法获取“完整信息”?

javascript c# asp.net culture cultureinfo

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

为什么 10 次方不等于 Python 中大数的科学记数法?

为什么 10**5 等于 1e5 而 10**50 不等于 Python 中的 1e50?

Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10**5 == 1e5
True
>>> 10**50 == 1e50
False
Run Code Online (Sandbox Code Playgroud)

直到 10**22 都是如此。那么它是假的:

>>> 10**22 == 1e22
True
>>> 10**23 == 1e23
False
Run Code Online (Sandbox Code Playgroud)

python

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

如何通过 ssh 将 docker-compose 解决方案从 github 自动部署到 vps?

我想要做什么:将 docker-compose 解决方案从 Github 部署到我安装了 docker 和 docker-compose 的虚拟专用服务器。

我看到有 Github Actions 允许我在推送到 master 后通过 SSH 复制文件,但我不知道docker-compose up在复制源后如何在我的服务器上运行。

在我的 VPS 上,我安装了 Ubuntu 18.4。

deployment ssh github vps docker-compose

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