小编Chr*_*sic的帖子

如何使用LINQ选择具有最小或最大属性值的对象

我有一个具有Nullable DateOfBirth属性的Person对象.有没有办法使用LINQ查询具有最早/最小DateOfBirth值的Person对象列表.

这是我开始的:

var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));
Run Code Online (Sandbox Code Playgroud)

Null DateOfBirth值设置为DateTime.MaxValue,以便将它们排除在Min考虑范围之外(假设至少有一个具有指定的DOB).

但对我来说,所有这一切都是将firstBornDate设置为DateTime值.我想得到的是与之匹配的Person对象.我是否需要编写第二个查询:

var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);
Run Code Online (Sandbox Code Playgroud)

或者有更简洁的方法吗?

.net c# linq

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

C#Object Pooling Pattern实现

有没有人有很好的资源来实现Sql连接池静脉中有限资源的共享对象池策略?(即完全实现它是线程安全的).

要跟进@Aaronaught请求澄清,池的使用将用于对外部服务的负载平衡请求.把它放在一个可能更容易立即理解的场景中,而不是直接的场景.我有一个会话对象,其功能ISession与NHibernate中的对象类似.每个唯一会话管理它与数据库的连接.目前我有一个长时间运行的会话对象,我遇到的问题是我的服务提供商限制我对这个单独会话的使用.

由于他们缺乏将单个会话视为长期服务帐户的期望,他们显然将其视为正在锤击其服务的客户.这让我想到了我的问题,而不是只有一个单独的会话,我会创建一个不同会话池,并将请求分成多个会话的服务,而不是像我以前那样创建一个单一的焦点.

希望该背景提供一些价值,但直接回答您的一些问题:

问:创建的对象是否昂贵?
答:没有对象是有限资源的池

问:他们会被频繁获得/释放吗?
答:是的,可以再次考虑NHibernate ISessions,其中通常在每个页面请求的持续时间内获取和释放1.

问:简单的先来先服务是否足够,或者你需要更聪明的东西,即能防止饥饿吗?
答:一个简单的循环类型分发就足够了,饥饿我认为你的意思是,如果没有可用的会话,呼叫者被阻塞等待发布.这不是真正适用的,因为会话可以由不同的呼叫者共享.我的目标是在多个会话中分配使用情况,而不是单个会话.

我认为这可能与对象池的正常使用有所不同,这就是为什么我最初将这部分留下来并计划仅仅为了调整模式以允许共享对象而不是允许饥饿情况发生.

问:优先事项,懒惰与急切加载等问题如何?
答:没有涉及优先级,为简单起见,假设我将在创建池本身时创建可用对象池.

c# design-patterns pooling

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

当构造函数具有参数时,使用Moq模拟对象

我有一个对象,我正在尝试使用moq进行模拟.对象的构造函数具有必需参数:

public class CustomerSyncEngine {
    public CustomerSyncEngine(ILoggingProvider loggingProvider, 
                              ICrmProvider crmProvider, 
                              ICacheProvider cacheProvider) { ... }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用moq的v3"setup"或v4"Mock.Of"语法为这个对象创建模拟但是无法解决这个...我正在尝试的一切都没有验证.这是我到目前为止所拥有的,但最后一行是给我一个真实的对象,而不是模拟.我这样做的原因是因为我想要验证的CustomerSyncEngine上有方法被调用...

// setup
var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists);
var mockCache = Mock.Of<ICacheProvider>(x => x.GetPickLists() == cachePickLists);
var mockLogger = Mock.Of<ILoggingProvider>();

// need to mock the following, not create a real class like this...
var syncEngine = new CustomerSyncEngine(mockLogger, mockCrm, mockCache);
Run Code Online (Sandbox Code Playgroud)

moq

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

MSBuild用于删除文件的任务语法

我正在尝试编写一个MSBuild任务,它从我的生成构建脚本上的bin文件夹中删除Obj目录和PDB,似乎无法使其正常工作.

有没有人有他们这样做或类似的例子,或者链接到一个简单的删除文件和MSBuild目录的例子?

msbuild msbuild-task

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

在IServiceProvider上,GetRequiredService和GetService方法之间有什么区别?

IServiceProvider.GetRequiredService()和之间有什么区别IServiceProvider.GetService()

什么时候使用它更好GetRequiredService()

dependency-injection .net-core asp.net-core

56
推荐指数
2
解决办法
7226
查看次数

正确的方式为SOAP Web服务传递WSSE Usernametoken

我试图通过其相应的wsdl使用Web服务.此服务依赖于符合Web服务安全基本安全配置文件1.0的身份验证,包括http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-secext-1.0的正确xmls命名空间. xsd必须包含在请求中.

例:

<wsse:UsernameToken xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' >
   <wsse:Username>
      Bob
   </wsse:Username>
   <wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>
      1234
   </wsse:Password>
</wsse:UsernameToken>
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是Add Service Reference针对wsdl以及使用它们生成的代理

ServicePointManager.ServerCertificateValidationCallback = 
    (object s, X509Certificate certificate, X509Chain chain,
                     SslPolicyErrors sslPolicyErrors) => true;

var basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
basicHttpBinding.Security.Transport.ClientCredentialType = 
                                                HttpClientCredentialType.Basic;

var endpoint = new EndpointAddress("https://secure-ausomxana.crmondemand.com/..."

using (var client = new ContactClient(basicHttpBinding, endpoint))
{

    var credential = client.ClientCredentials.UserName;
    credential.UserName = "bob";
    credential.Password = "1234";

    var input = ...    
    var output = client.ContactQueryPage(input);
}
Run Code Online (Sandbox Code Playgroud)

但是,尝试使用Fiddler查询SOAP消息时,我发现没有添加任何UsernameToken元素.

履行这份合同的正确方法是什么?

编辑: …

c# wcf ws-security visual-studio-2010 wcf-security

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

HTML5 nav元素与role ="navigation"

以下所有内容是否具有相同的语义含义?如果没有,请解释你的答案.


1.

<nav>
    <ul>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)


2.

<div role="navigation">
    <ul>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
        <li><a href="#">link</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)


3.

<ul role="navigation"> 
<! -- breaks HTML5 specification 3.2.7.4 Implicit ARIA Semantics
      navigation is not an allowed value of role on ul -->
    <li><a href="#">link</li>
    <li><a href="#">link</li>
    <li><a href="#">link</li>
    <li><a href="#">link</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

html5 semantic-markup nav

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

顺序Guid发生器

有没有办法获得Sql Server 2005+ Sequential Guid生成器的功能,而无需插入记录来回读往返或调用本机win dll调用?我看到有人回答使用rpcrt4.dll,但我不确定是否可以从我的托管环境中进行生产.

编辑:使用@John Boker的答案我试图把它变成GuidComb生成器的更多,而不是依赖于最后生成的Guid而不是重新开始.对于种子,而不是从我使用的Guid.Empty开始

public SequentialGuid()
{
    var tempGuid = Guid.NewGuid();
    var bytes = tempGuid.ToByteArray();
    var time = DateTime.Now;
    bytes[3] = (byte) time.Year;
    bytes[2] = (byte) time.Month;
    bytes[1] = (byte) time.Day;
    bytes[0] = (byte) time.Hour;
    bytes[5] = (byte) time.Minute;
    bytes[4] = (byte) time.Second;
    CurrentGuid = new Guid(bytes);
}
Run Code Online (Sandbox Code Playgroud)

我根据评论做了这个

// 3 - the least significant byte in Guid ByteArray 
        [for SQL Server ORDER BY clause]
// 10 - the most significant byte in Guid ByteArray …
Run Code Online (Sandbox Code Playgroud)

c# guid sequence

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

是否值得初始化List <T>的集合大小,如果它的大小合理地知道?

List<T>如果合理地知道它的初始化是否值得?

编辑:进一步提出这个问题,在阅读完第一个答案之后,这个问题实际上归结为什么是默认容量以及如何进行增长操作,是否将容量增加一倍等?

c# generics list

35
推荐指数
3
解决办法
6816
查看次数

如何使用PageDown Markdown编辑器?

我想为用户提供实时预览使用Markdown创建的笔记的功能.但是我在该项目中找不到任何下载.

如何开始使用PageDown Markdown编辑器?

markdown pagedown

34
推荐指数
2
解决办法
8475
查看次数