小编Ste*_*idi的帖子

使用LINQ,如何从List中找到具有给定属性值的对象?

我有一个叫做的课Questions.这Questions有属性QuestionIDQuestionAnswer.虽然List of Question在foreach中迭代这个,但我必须找到.QuestionID = 12.如果我发现.QuestionID = 12那我得马上值赋给.QuestionAnswer = "SomeText".QuestionID = 14.

我不想再次在.QuestionId = 12' to find.QuestionID = 14`内再次迭代.

有什么方法可以直接.QuestionID = 14使用LINQ吗?

例如:

For Each mQuestion As Question In _mQuestions
    If mQuestion.QuestionId = 12 Then
         'Find mQuestion.QuestionID= 14 and insert Somtext to 
          'mQuestion.QuestionAnswer="SomeText"
    End IF
Next
Run Code Online (Sandbox Code Playgroud)

.net c# linq vb.net asp.net

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

如何指示NUnit从特定目录加载程序集的dll.config文件?

如果程序集包含app.config文件,ConfigurationManager只要它与通过NUnit-Gui执行的NUnit项目位于同一目录中,就会加载它.为了说明考虑以下文件夹结构.

+ TestFolder
    testProject.nunit
  + AssemblyAFolder
      assemblyA.dll
      assemblyA.dll.config
  + AssemblyBFolder
      assemblyB.dll
      assemblyB.dll.config
Run Code Online (Sandbox Code Playgroud)

两者AssemblyAAssemblyB锻炼代码调用ConfigurationManager.如果我在NUnit-Gui中独立运行这些测试程序集,ConfigurationManager将正确解析本地配置文件.

然而,如果我加载testProject.nunit到NUnit的桂(其包含两者的引用AssemblyAAssemblyB),ConfigurationManager查找在配置文件TestFolder而不管哪个组件当前正在执行.

有没有办法指示NUnit将应用程序配置重新加载到当前程序集目录中的应用程序配置?

以下是内容testProject.nunit:

<NUnitProject>
  <Settings activeconfig="Debug" />
  <Config name="Debug" binpathtype="Auto">
    <assembly path="AssemblyAFolder\assemblyA.dll" />
    <assembly path="AssemblyBFolder\assemblyB.dll" />
  </Config>
</NUnitProject>
Run Code Online (Sandbox Code Playgroud)

.net nunit unit-testing configurationmanager app-config

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

是否应该在WebException中处理WebResponse引用,如果从WebClient引发?

相关问题:.Net中的WebClient没有释放套接字资源

在调试资源泄漏问题时,我注意到System.Net.WebException(非一次性类型)包含对System.Net.WebResponse(一次性类型)的引用.我想知道在显式处理WebResponse以下代码段中的as 时是否应该处理此引用.

using (WebClient client = new WebClient())
{
    WebException ex = Assert.Throws<WebException>(() => client.OpenRead(myUri));
    Assert.That(
        ((HttpWebResponse)ex.Response).StatusCode,
        Is.EqualTo(HttpStatusCode.ServiceUnavailable));
}
Run Code Online (Sandbox Code Playgroud)

WebException.WebResponse引用是现有引用的副本WebClient.我认为它会被处理掉,WebClient.Dispose但事实并非如此,因为WebClient它不会覆盖受保护的Component.Dispose(bool)基本方法.实际上,反汇编表明WebResponse资源从未被处理掉,而是在不再需要时设置为null.

public Stream OpenRead(Uri address)
{
    Stream stream2;

    // --- removed for brevity ---

    WebRequest request = null;
    this.ClearWebClientState();
    try
    {
        request = this.m_WebRequest = this.GetWebRequest(this.GetUri(address));
        Stream responseStream = (this.m_WebResponse = this.GetWebResponse(request)).GetResponseStream();

        // --- removed for brevity ---

        stream2 = responseStream; …
Run Code Online (Sandbox Code Playgroud)

.net dispose webclient httpwebrequest httpwebresponse

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

是否可以克隆IEnumerable <T>实例,保存迭代状态的副本?

我想创建一个副本,IEnumerator<T>以便我可以从集合中的特定位置重新启动枚举过程.显然,对于实现的集合,这样做没有任何好处IList,因为我们可以记住感兴趣的索引.

使用yield语句和Linq函数的组合是否有一种聪明的方法来完成此任务?我找不到合适的Clone()方法来复制枚举器,并且希望避免使用Enumerable.Skip()将新的枚举器重新定位到所需的恢复点.

此外,我希望尽可能保持解决方案的通用性,而不必依赖任何具体集合中的状态.

.net c# linq ienumerable clone

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

为什么我的重载C++构造函数没有被调用?

我有一个像这样的课:

class Test{
public:
  Test(string value);
  Test(bool value);

};
Run Code Online (Sandbox Code Playgroud)

如果我创建这样的对象:

Test test("Just a test...");
Run Code Online (Sandbox Code Playgroud)

bool构造函数被调用!

谁知道为什么?

谢谢

c++ constructor constructor-overloading

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

将List.FindAll()与lambda一起使用的VB.NET语法是什么?

在C#中,我一直在通用列表中执行FindAll,如下所示:

List<group.category> tlist = list.FindAll(p => p.parid == titem.catid);
Run Code Online (Sandbox Code Playgroud)

两个问题,这是执行这样的事情的适当方式,我如何将其转换为VB.Net

c# vb.net predicate generic-list findall

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

如何定义一个接受任何生成IEnumerable <T>的任务的函数?

我正在寻找创建一个接受任何产生一个任务的函数IEnumerable<T>.为了说明,请考虑以下函数签名.

void DoWork<TElement>(Task<IEnumerable<TElement>> task)
{ }
Run Code Online (Sandbox Code Playgroud)

现在,我想将此方法称为如下:

Task<int[]> task = Task.FromResult(new[] { 1, 2, 3 });
DoWork(task);
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用,因为两种Task类型不相同,并且任务不存在协方差.但是,我想知道是否有一些聪明的技巧可以让它工作,受以下例子的启发.

async Task<IEnumerable<int>> GetTask()
{
    return await Task.FromResult(new int[] { 1, 2, 3 });
}
Run Code Online (Sandbox Code Playgroud)

这里,await有效地创建了一个带有内联任务结果的新任务,因此产生了类型转换的错觉.

为了给出更详细的示例,我想允许用户DoWork在转换时没有太多负担来打电话:

// Service proxy method
Task<int[]> GetInts()
{
    // simplified for brevity
    return Task.FromResult(new[] { 1, 2, 3 });
}

// Service proxy method
Task<long[]> GetLongs()
{
    // simplified for brevity
    return Task.FromResult(new[] { 100L, 200L, 300L });
} …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library async-await

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

ToString()在字符串上使用时会产生新的字符串吗?

"hello".ToString()生成一个新字符串还是足够智能返回对同一对象的引用?

.net c# string

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

是否有.NET函数可以让我比较两个运算符的优先级?

.NET Framework中是否有一种类型可以比较两个运算符并确定其优先级是否低于另一个运算符?目前,我已经IComparer<ExpressionType>为我感兴趣的运营商实现了一种功能,并使用C#语言的运营商类别图表.

实施是微不足道的,而对于编译器/解释实施者一般使用,导致我认为一般的效用函数存在.或者,如果存在库函数以获得给定运算符的序数,则实现这样的比较器也是微不足道的.

.net expression-trees operator-precedence

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

如何使用JwtSecurityTokenHandler和JWKS端点验证JWT?

我正在使用IdentityServer4来保护多个服务的原型,但需要注意的是,这些服务可能无法迁移(在可预见的未来)以使用ASP.NET Core的OWIN中间件习惯用法.因此,我不能利用许多中间件助手来自动验证JWT,只需提供IdentityServer的着名JWKS端点等等.

如果我可以重建这种行为会很好,我想尽可能利用微软的JwtSecurityTokenHandler实现.但是,我无法弄清楚如何利用IdentityServer的发现端点提供的类型JsonWebKeySetJsonWebKey类型来提取密钥并执行验证.

JwtSecurityTokenHandler用于TokenValidationParameters验证JWT,这些参数需要一个或多个SecurityKey对象的实例来执行验证.

ClaimsPrincipal ValidateJwt(string token, IdentityModel.Client.DiscoveryResponse discovery)
{
    JwtSecurityToken jwt = new JwtSecurityToken(token);

    TokenValidationParameters validationParameters = new TokenValidationParameters
    {
        ValidateAudience = true,
        ValidateIssuer = true,
        RequireSignedTokens = true,
        ValidIssuer = "expected-issuer",
        ValidAudience = "expected-audience",
        IssuerSigningKeys = discovery.KeySet.Keys /* not quite */
    };

    JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
    SecurityToken validatedToken;
    return handler.ValidateToken(jwt, validationParameters, out validatedToken);
}
Run Code Online (Sandbox Code Playgroud)

如何从执行必要的转换JsonWebKeySet,以IEnumerable<SecurityKey>使可能发生的验证?是否有其他方法(除了OWIN中间件)也可以使用DiscoveryResponse上面的数据?

(遗憾的是,文档System.IdentityModel.Tokens.Jwt不是最新的.)

asp.net oauth-2.0 jwt openid-connect identityserver4

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