小编Mar*_*rko的帖子

SELECT*FROM X WHERE使用Dapper ORM标识IN(...)

当IN子句的值列表来自业务逻辑时,使用Dapper ORM使用IN子句编写查询的最佳方法是什么?例如,假设我有一个查询:

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)
Run Code Online (Sandbox Code Playgroud)

commaSeparatedListOfIDs是从业务逻辑传入的,它可以是任何类型的IEnumerable(of Integer).在这种情况下,我将如何构造查询?我是否必须做到目前为止我一直在做的事情,这基本上是字符串连接,还是有一些我不知道的高级参数映射技术?

.net sql dapper

209
推荐指数
7
解决办法
9万
查看次数

System.Linq.Dynamic不支持OrderByDescending("someColumn")?

好的,在我们的项目中,我使用的是System.Linq.Dynamic库,但我注意到我无法完成以下操作:

myDataSource.OrderByDescending( "someColumnName")

因为我收到以下错误:

重载解析失败,因为无法使用这些参数调用可访问的OrderByDescending ...

似乎Library只支持OrderBy("someColumnName").是否有这样的原因,如果我想按降序重新排序记录,我将如何绕过这个问题?我是否必须使用Reverse()例如OrderBy("someColumnName").Reverse()?看起来像一个黑客......

任何建议将不胜感激...

linq vb.net asp.net

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

当您必须同时拥有异步和同步版本的代码时,如何避免违反 DRY 原则?

我正在开发一个需要同时支持同一逻辑/方法的异步和同步版本的项目。所以例如我需要有:

public class Foo
{
   public bool IsIt()
   {
      using (var conn = new SqlConnection(DB.ConnString))
      {
         return conn.Query<bool>("SELECT IsIt FROM SomeTable");
      }
   }

   public async Task<bool> IsItAsync()
   {
      using (var conn = new SqlConnection(DB.ConnString))
      {
         return await conn.QueryAsync<bool>("SELECT IsIt FROM SomeTable");
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

这些方法的异步和同步逻辑在各方面都是相同的,除了一个是异步的,另一个不是。在这种情况下,是否有合法的方法来避免违反 DRY 原则?我看到有人说你可以在异步方法上使用 GetAwaiter().GetResult() 并从你的同步方法调用它?该线程在所有情况下都安全吗?有没有另一种更好的方法来做到这一点,还是我被迫复制逻辑?

.net c# asynchronous

16
推荐指数
2
解决办法
565
查看次数

如何在Chrome中点击浏览器通知时自动关注浏览器标签?

我正在尝试为我正在处理的项目设置浏览器通知.我到目前为止的代码是:

// Notification permissions logic handled before...
var notification = new Notification('Title', { body: 'Message' });
notification.onclick = function (e) {
    window.focus();
    // this.cancel();
};
setTimeout(notification.close.bind(notification), 5000);
Run Code Online (Sandbox Code Playgroud)

除了一件事,通知可以正常使用此代码.在Chrome中,点击通知不会将焦点设置在浏览器窗口中.在Firefox中,这种行为是开箱即用的,并且在没有上面定义的点击处理程序的情况下工作正常.我为Chrome寻找了解决方案,并找到了以下内容:

在Firefox中单击桌面通知时如何关注选项卡?

如何关注创建桌面通知的Chrome标签?

然而,建议接受的解决方案对我不起作用 - 事件被触发但未设置焦点.

有没有人有任何建议如何使这种行为正常?

Chrome版本:版本44.0.2403.130米

Firefox版本:40.0

javascript browser notifications web-notifications

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

在访问之前,可能不会初始化局部变量(int)

我在类中定义了以下方法:

public bool LogOff(string sessionId)
{
   int res;
   // Some non related code here..
   if (res == 1)
   {
      return true;
   }
   return false;
}
Run Code Online (Sandbox Code Playgroud)

对我来说很奇怪的是,我在IF子句中获得了"在访问Visual Studio之前可能没有初始化本地变量"错误(我安装了ReSharper).当"res"是一个值类型时,为什么会这样,因此默认为0?我应该指出,如果我专门将res的值设置为0,那么一切都OK.

我在这里错过了什么?我认为这些是编程的基础,但显然我不熟悉基础知识......

c# value-type

10
推荐指数
2
解决办法
8606
查看次数

如何在BundleConfig文件中填充{version}值?

我最近在我的项目中添加了jquery.dataTables nuget包,我想在BundleConfig中捆绑必要的文件.由于此软件包安装在Scripts文件夹中的"DataTables-1.9.4"文件夹中,因此我在BundlesConfig中添加了以下行:

bundles.Add(new ScriptBundle("~/bundles/dataTables").Include(
            "~/Scripts/DataTables-{version}/media/js/jquery.dataTables.js"));
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

System.Web.Optimization.dll中出现"System.ArgumentException"类型的异常,但未在用户代码中处理

当我将该行修改为:

bundles.Add(new ScriptBundle("~/bundles/dataTables").Include(
            "~/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.js"));
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

所以我的问题是如何在JQuery包的情况下注入版本?这是在包本身的某个地方定义的,有没有办法让我解决这个问题?我讨厌每次更新dataTables nuget包时都必须更改我的bundle配置的想法...

.net asp.net-mvc scriptbundle

10
推荐指数
3
解决办法
6786
查看次数

使用Linq.Dynamic时,如何通过多个字段进行排序?

在标准linq中,当我使用lambdas时,我可以执行以下操作:

var x = _usersService.GetAll().OrderBy(u => u.LastName).ThenBy(u => y.FirstName).ThenBy(u => u.UserId)
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我使用System.Linq.Dynamic dll时,我该怎么做?我知道我能做到:

var x = _usersService.GetAll().OrderBy("LastName")
Run Code Online (Sandbox Code Playgroud)

但是如何通过子句定义附加顺序?

.net linq

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

如何在现有的 .NET MVC 项目中启用/使用/配置 WebAssembly Blazor?

我有一个用 .net core MVC 编写的 Web 应用程序,这是一个使用模型/视图/控制器模式的标准“老派”Web 应用程序。在这个应用程序中,我有一些复杂的表单,它们会根据用户的选择而改变。根据用户在前几个下拉列表中选择的内容加载不同的元素。目前我使用 Vue.js 成功构建了这样一个界面。所以基本上我没有 SPA 应用程序,但是当需要复杂的前端界面时,我偶尔会在整个应用程序中使用 Vue.js。

现在客户端 WebAssembly Blazor 正式推出,我想用基于 Blazor 的代码替换我用 vue.js 编写的复杂表单。我发现,说明了如何使用服务器端Blazor这样做后在这里,但我无法找到关于它的WebAssembly版本什么。

有没有人设法将客户端 - Web 程序集 Blazor 集成到现有的 MVC 项目中?如果是这样怎么办?

asp.net-mvc blazor asp.net-core-3.0

10
推荐指数
2
解决办法
3745
查看次数

构建自定义 Blazor 组件时,我可以要求组件参数吗?

当我尝试构建 Blazor 组件时,我可以为它定义参数,如下所示:

@code {

   [Parameter]
   public string MyString { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是我是否可以要求此参数,以便在使用组件时,除非我提供指定的参数,否则项目将不会构建?这是我应该担心的事情吗?我想我可以处理组件初始化中的任何无效值,如果值不是这样提供的,可能会抛出异常:

protected override void OnInitialized()
{
    base.OnInitialized();
    if (string.IsNullOrWhiteSpace(MyString)) {
       // throw an exception here...
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是处理这个问题的正确方法吗?

c# blazor

8
推荐指数
3
解决办法
1926
查看次数

如何根据给定的视频 url 从 Youtube API 获取 Youtube 视频 ID?

我有一个页面,用户可以在其中粘贴 Youtube 视频网址,然后我需要提取视频的 ID 才能获取视频的缩略图。困难的部分是找到一种从视频 URL 中提取视频 ID 的可靠方法。这里有很多正则表达式解决方案,但对我来说,这些都不是 100% 可靠的。这里有一些:

  1. JavaScript REGEX:如何从 URL 获取 YouTube 视频 ID?
  2. Youtube API - 提取视频 ID

这就像谁拥有更长的正则表达式的竞赛。我觉得正确的方法是从 Youtube 的 api 获取此信息,但看看它,似乎这个选项不可用:

https://developers.google.com/apis-explorer/#p/youtube/v3/

正如你所看到的,一切都是基于视频 ID 的。我觉得很荒谬的是,我需要实际的视频 ID 来获取有关视频的任何信息,因为现实世界的用户甚至不会知道视频 ID 是什么。Vimeo 已将此功能内置到其 API 中。这是一个例子:

https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908

有没有人有一个不涉及正则表达式的解决方案?

youtube youtube-api youtube-data-api

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