Dapper查询多个空白结果集

时间:2019-08-08 17:24:41

标签: c# dapper

我需要能够判断dapper中的多个异步查询何时返回空数据集(因此不返回任何行),但是我不确定这样做的正确方法。

以下类似于我当前的代码:

var data= await db.QueryMultipleAsync(getDataProcedure, commandType: CommandType.StoredProcedure, param: parameters);

var table1Data = data.Read<table1Type>().First();
var table2Data = data.Read<table2Type>().First();

我想要做的是在table1Datatable2Data变量周围放置一个if,以便只有在有数据填充时才填充它们。

如果需要进一步说明,请告诉我。

2 个答案:

答案 0 :(得分:2)

Dapper返回IEnumerable<T>集合,如果没有从数据库中读取任何行,则该集合为空。因此,您可以简单地使用FirstOrDefault而不是First。如果没有返回行,它将导致null。 (最好说的是,您的数据类型default将是table1Type,而所有引用类型将是null。)

答案 1 :(得分:0)

您应该使用Any。它将检查IEnumerable<T>是否有任何数据。

var data= await db.QueryMultipleAsync(getDataProcedure, commandType: CommandType.StoredProcedure, param: parameters);

if (data.Read<table1Type>().Any() && data.Read<table2Type>().Any())
{
    ... // Do stuf with data
}

我认为它的意图比FirstOrDefault()!=null更清晰。