小编Kie*_*ran的帖子

如何将 WaitAll 任务的结果分配给变量

我有这样的情况:

var retrievalTasks = new Task[2];

retrievalTasks[0] = GetNodesAsync();

retrievalTasks[1] = GetAssetsToHandleAsync();

Task.WaitAll(retrievalTasks);
Run Code Online (Sandbox Code Playgroud)

而且我想的结果retrievalTasks[0],并retrievalTasks[1]存储在变量。

我可以通过以下方式实现这一目标:

 var a = await GetNodesAsync();
 var b = await GetAssetsToHandleAsync();;
Run Code Online (Sandbox Code Playgroud)

但我宁愿不那样等待,因为那样他们不会同时被解雇,对吗?还是我误会了?

我已经将此视为参考:Awaiting multiple Tasks with different results

但我认为这是一个稍微不同的场景,在我的情况下不起作用。

有任何想法吗?

谢谢

编辑:

await Task.WhenAll(catTask, houseTask, carTask);

var cat = await catTask;

var house = await houseTask;

var car = await carTask;
Run Code Online (Sandbox Code Playgroud)

这似乎只是等待了四次才能得到三个结果。但是,@armenm 已经展示了如何避免这种情况。

c# asynchronous async-await

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

SQL Server 更新:如果参数不为空,则设置列

我有一个存储过程,用于根据列的值是否存在来插入或更新表。这工作正常,除非我只想在传递参数时设置某些列的值。这是因为我不想用 null 覆盖现有的列值。

下面是存储过程的概念:

CREATE PROCEDURE [dbo].[p_SaveState]
   @Foo             nvarchar(50),
   @Bar             nvarchar(20) = null,
   @Something       nvarchar(20) = null
AS
BEGIN
   IF EXISTS (SELECT TOP(1) Foo FROM dbo.[State] WHERE Bar = @Bar)
   BEGIN
       UPDATE [dbo].[State]
       SET Bar = @Bar, 
           Something = @Something
       WHERE (--condition--)
   END
   ELSE
   BEGIN
      ... -- INSERT statement goes here
Run Code Online (Sandbox Code Playgroud)

我正在尝试完成这样的事情:

UPDATE [dbo].[State]
SET Bar = @Bar, 
    IF (@Something IS NOT NULL) Something = @Something
 WHERE (--condition--)
Run Code Online (Sandbox Code Playgroud)

但我不相信我可以使用 CASE,因为我没有在不执行选择的情况下设置原始值。

我怎样才能达到这种效果?

t-sql sql-server sql-update

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

是否有null版本但列表?

我有一个单元测试我想写.

我将此部分作为工作版本的一部分:

List<MyClass> queryResult = new List<MyClass>(){};

A.CallTo(() => _dataContext.GetAll<MyClass>()).Returns(queryResult.AsQueryable());
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿使用"null"而不是"queryResult.AsQueryable()"之类的东西,那么就没有必要创建一个空列表.

但GetAll将根据事物的外观返回一个空或满的列表.因此,null将不起作用.

是否有类似"List.Empty"的东西我可以使用?

谢谢

c# null generic-list mspec

0
推荐指数
1
解决办法
113
查看次数