Linq 删除值为 null 的位置

Mat*_*haq 4 c# linq entity-framework

My Linq 查询

var result = db.APPLICATIONS
.Where(a => Statuses.Contains(a.STATUS_ID))
.Where(a => a.TrackingNo == TrackingNo)
Run Code Online (Sandbox Code Playgroud)

Statuses是一个 int 列表并且TrackingNo是一个可以为 null 的 int ( int?)。

问题: 如果TrackingNo为空,那么我不想运行此子句或只是跳过此条件。

xan*_*tos 5

LINQ 查询可以通过多个步骤构建:

var result = db.APPLICATIONS
    .Where(a => Statuses.Contains(a.STATUS_ID));

if (TrackingNo != null)
{
    result = result.Where(a => a.TrackingNo == TrackingNo);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有Select(投影),您可能必须在多个变量中分多个步骤构建查询:

var result2 = result.Select(a => new { a.STATUS_ID });
Run Code Online (Sandbox Code Playgroud)

result2后面加“建” if