小编Dav*_*rke的帖子

什么是用于捕获SQLException和重试的优秀C#编码样式

我有一个方法调用SQLServer函数对表执行自由文本搜索.该函数有时会在第一次调用时导致SQLException:"全文查询字符串的单词分解超时".所以我通常想重试该请求,因为它会在后续请求中成功.构造重试逻辑的好方法是什么.目前我有以下内容:

var retryCount = 0;
var results = new List<UserSummaryDto>();
using (var ctx = new UsersDataContext(ConfigurationManager.ConnectionStrings[CONNECTION_STRING_KEY].ConnectionString))
{
    for (; ; )
    {
        try
        {
            results = ctx.SearchPhoneList(value, maxRows)
                         .Select(user => user.ToDto())
                         .ToList();
            break;
        }
        catch (SqlException)
        {
            retryCount++;
            if (retryCount > MAX_RETRY) throw;
        }
    }
}

return results;
Run Code Online (Sandbox Code Playgroud)

c# sql linq

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

使用"基础"不良做法,即使它可能有利于可读性?

我知道这是一个主观问题,但我总是对编码风格的最佳实践感到好奇.在实现类中调用基本方法之前,ReSharper 4.5给出了关键字"base"的警告,即

base.DoCommonBaseBehaviorThing();
Run Code Online (Sandbox Code Playgroud)

虽然我很欣赏"越少越好"的心态,但我也花费了大量时间来调试/维护高度链接的应用程序,并且感觉通过查看成员调用对于基础对象可能会有所帮助.当然,改变ReSharper的规则很简单,但你们怎么想?在调用基础成员时应该使用"base"吗?

c# resharper coding-style

12
推荐指数
3
解决办法
1330
查看次数

如何使用AutoMapper将对象列表转换为整数列表?

我有一个Student对象:

public class Student
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个Classroom对象:

public class Classroom
{
    public List<Student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想使用AutoMapper将学生列表转换为学生ID列表:

public class ClassroomDTO
{
    public List<int> StudentIds { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何配置AutoMapper以执行此转换?

回答:

为了扩展我的问题和Jimmy的答案,这就是我最终做的事情:

Mapper.CreateMap<Student, int>().ConvertUsing(x => x.Id);
Mapper.CreateMap<Classroom, ClassroomDTO>()
      .ForMember(x => x.StudentIds, y => y.MapFrom(z => z.Students));
Run Code Online (Sandbox Code Playgroud)

AutoMapper非常聪明,可以完成剩下的工作.

flatten automapper

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

将文件复制到SharePoint中的文档库

我在SharePoint中有一个文档库.当一个新文件上传到该库时,我希望它也能自动复制到另一个文档库.我怎样才能做到这一点?

c# sharepoint

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

根据相邻的下拉值更改Excel中的单元格颜色

我知道如何制作下拉列表.我理解如何使条件格式更改单元格的颜色.我不明白的是如何使条件格式化仅基于另一个单元格的状态(而不是比较)来改变单元格的颜色.

A1是一个No / Yes下拉列表

B1 是一个标准声明

如果用户满足条件语句B1,则Yes在下拉列表中选择A1.为了快速参考,如果可能的话,我想B1在此事件中更改为绿色背景颜色,当然如果重置为下拉菜单,则更改为no-fill No.

这在Excel 2003和/或2007中是否可行?

excel conditional-formatting

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

使用Javascript格式化日期时间

我有一个日期/时间字符串,2012-01-13 04:37:20但我想将其转换为dd-mm-yyyy hh:mm,我该怎么做?

我使用以下代码,但它抛出异常.

var now = "2012-01-13 04:37:20";
var dd = now.toLocaleDateString() + " " + now.toLocaleTimeString();
alert(dd);
Run Code Online (Sandbox Code Playgroud)

html javascript

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

"动态操作只能在同类AppDomain中执行"错误

我在locahost上运行MVC3站点时遇到此错误.它是一个刚刚创建的新MVC3站点,该HomeController Index方法是在ViewBag.Message作业中被抛出的地方.

public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
    return View();
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args)
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at MVC3.Web.UI.Controllers.HomeController.Index() in C:\Users\mccarthy\Documents\Visual Studio 2010\Projects\MVC3\MVC3.Web.UI\Controllers\HomeController.cs:line 13
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误是什么,以前没见过.当我启动一个新的MVC2项目(直到这一点我一直在使用)时,该网站运行得很好.

Microsoft如何处理MVC3和MVC2框架之间的安全性有什么不同?

asp.net asp.net-mvc-3 asp.net-mvc-2

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

SharePoint SPFolder.SubFolders.Add实际上没有添加文件夹

我有几个文档库只是标准库 - 没有相关的自定义内容类型或任何东西.我正在尝试向他们添加子文件夹,在某些情况下它只是不起作用.

SPFolder parent = library.RootFolder;
SPFolder child = parent.SubFolders.Add(subfoldername);
parent.Update();
bool exists = child.Exists;   // This is false
Run Code Online (Sandbox Code Playgroud)

当我尝试添加一个名为M1 Spectrum CRC w-out CMN67 E02_filesvia code 的子文件夹时,它无法添加该文件夹,即使该Add方法似乎成功执行.当我尝试通过标准的基于浏览器的SharePoint列表UI添加这个确切名称的文件夹时,我成功地添加了一个文件夹,但它有一个不同的名称:

M1 Spectrum CRC w-out CMN67 E02_files_

请注意SharePoint创建的文件夹中的尾随下划线.这是一个合法的Windows文件夹名称,它不包含任何不友好的HTML字符.那么,这有什么用呢?我错过了一些明显的东西吗

sharepoint sharepoint-api

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

如何解决HttpClient存在于多个库中

我正在尝试在.NET Core类库中使用IdentityModel包,但是我netstandard和之间发生了冲突System.Net.Http:

error CS0433: The type 'HttpClient' exists in both
'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and
'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
Run Code Online (Sandbox Code Playgroud)

项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="IdentityModel" Version="2.8.1" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

默认值Class1.cs:

using System;
using System.Net.Http;
namespace Test
{
    public class Class1
    {
        HttpClient client = new HttpClient();
        public Class1() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

解决此问题的正确方法是什么?

c# dotnet-httpclient .net-core .net-standard-2.0

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

我可以在带开关盒的c#中使用正则表达式吗?

我可以像这样在c#中编写switch case吗?

switch (string)

case [a..z]+

//   do something

case [A..Z]+

//   do something

....
Run Code Online (Sandbox Code Playgroud)

c# regex

7
推荐指数
3
解决办法
5953
查看次数