C# LINQ Null返回0
我有以下LINQ查询。要检查传入值是否为null,我使用C# LINQ Null返回0,c#,.net,linq,nullable,C#,.net,Linq,Nullable,我有以下LINQ查询。要检查传入值是否为null,我使用?(示例:)。这样,即使值为null,查询也可以继续。但是,如何返回0而不是返回空值?我在代码的下游使用这些值,如果为null,则抛出一个错误 var query = referenceDt.AsEnumerable() .Where(results => comp(results.Field<decimal?>("OFR_Percent"), ofrPercent) &&
?
(示例:
)。这样,即使值为null,查询也可以继续。但是,如何返回0而不是返回空值?我在代码的下游使用这些值,如果为null,则抛出一个错误
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")
});
var query=referenceDt.AsEnumerable()
其中(结果=>comp(结果字段(“OFR_百分比”),OFR百分比)&&
results.Field(“computemptynodecount”)results.Field(“Cluster”))
.选择(结果=>新建)
{
ServerGroup=results.Field(“集群”),
OOS_百分比=结果字段(“OOS_百分比”),
OutOfServiceCores=results.Field(“OutOfServiceCores”),
OFR_百分比=结果字段(“OFR_百分比”),
OFR_计数=结果字段(“OutForRepairNodeCount”),
RawTotalNodes=results.Field(“RawTotalNodes”)
});
您可以使用(??)运算符。如果左操作数不为空,则返回左操作数,否则返回右操作数
.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")
});
。选择(结果=>新建
{
ServerGroup=results.Field(“集群”)??“,
OOS_百分比=结果字段(“OOS_百分比”)??0,
OutOfServiceCores=结果字段(“OutOfServiceCores”)??0,
OFR_百分比=结果字段(“OFR_百分比”),
OFR_计数=结果字段(“OutForRepairNodeCount”),
RawTotalNodes=results.Field(“RawTotalNodes”)
});
结果字段(“OutOfServiceCores”)??0等。