LINQ 空 Return 0
LINQ Null Return 0
我有以下LINQ query.To检查传入的值为null,我使用?
(示例:<decimal?>
)。这允许查询继续,即使值为 null。但是,我如何才能 return 0 而不是 returning 空值?我在我的代码下游使用这些值,如果它为空,则抛出错误。
var query = referenceDt.AsEnumerable()
.Where(results => comp(results.Field<decimal?>("OFR_Percent"), ofrPercent) &&
results.Field<int?>("ComputeEmptyNodeCount") <= nodeCount)
.OrderBy(results => results.Field<string>("Cluster"))
.Select(results => new
{
ServerGroup= results.Field<string>("Cluster"),
OOS_Percent = results.Field<decimal?>("OOS_Percent"),
OutOfServiceCores = results.Field<int?>("OutOfServiceCores"),
OFR_Percent = results.Field<decimal>("OFR_Percent"),
OFR_Count = results.Field<int>("OutForRepairNodeCount"),
RawTotalNodes = results.Field<int>("RawTotalNodes")
});
您可以使用 null-coalescing operator (??) 运算符。如果它不为空,它 returns 是左操作数,否则它 returns 是右操作数。
.Select(results => new
{
ServerGroup= results.Field<string>("Cluster") ?? "",
OOS_Percent = results.Field<decimal?>("OOS_Percent")?? 0,
OutOfServiceCores = results.Field<int?>("OutOfServiceCores") ?? 0,
OFR_Percent = results.Field<decimal>("OFR_Percent"),
OFR_Count = results.Field<int>("OutForRepairNodeCount"),
RawTotalNodes = results.Field<int>("RawTotalNodes")
});
我有以下LINQ query.To检查传入的值为null,我使用?
(示例:<decimal?>
)。这允许查询继续,即使值为 null。但是,我如何才能 return 0 而不是 returning 空值?我在我的代码下游使用这些值,如果它为空,则抛出错误。
var query = referenceDt.AsEnumerable()
.Where(results => comp(results.Field<decimal?>("OFR_Percent"), ofrPercent) &&
results.Field<int?>("ComputeEmptyNodeCount") <= nodeCount)
.OrderBy(results => results.Field<string>("Cluster"))
.Select(results => new
{
ServerGroup= results.Field<string>("Cluster"),
OOS_Percent = results.Field<decimal?>("OOS_Percent"),
OutOfServiceCores = results.Field<int?>("OutOfServiceCores"),
OFR_Percent = results.Field<decimal>("OFR_Percent"),
OFR_Count = results.Field<int>("OutForRepairNodeCount"),
RawTotalNodes = results.Field<int>("RawTotalNodes")
});
您可以使用 null-coalescing operator (??) 运算符。如果它不为空,它 returns 是左操作数,否则它 returns 是右操作数。
.Select(results => new
{
ServerGroup= results.Field<string>("Cluster") ?? "",
OOS_Percent = results.Field<decimal?>("OOS_Percent")?? 0,
OutOfServiceCores = results.Field<int?>("OutOfServiceCores") ?? 0,
OFR_Percent = results.Field<decimal>("OFR_Percent"),
OFR_Count = results.Field<int>("OutForRepairNodeCount"),
RawTotalNodes = results.Field<int>("RawTotalNodes")
});