【发布时间】:2012-04-11 15:31:27
【问题描述】:
我有交易对象列表,并希望根据用户当前打开的视图按特定条件对它们进行排序。
我遇到的问题是,为了在 where 子句中添加条件,首先我需要检查它是否为空,以防止空指针异常。这会导致列 null 的记录被过滤掉(我想将它们包含在列表的底部)。
如果该列为空,我如何修改查询以忽略条件(位置和排序依据)并仍将它们附加到结果集中?
这是一个示例查询:
transactions = transactions
.Where(t => t.PurchaseRequisition != null &&
t.Award != null && t.PurchaseRequisition.RequisitionedBy != null)
.OrderBy(t => t.Award.ContractNumber).
ThenBy(t => ToSafeString(t.Award.ContractNumber)).
ThenBy(t => ToSafeString(t.PurchaseRequisition.RequisitionedBy.FullName));
public string ToSafeString(string s)
{
return s ?? String.Empty;
}
// 我希望将 PurchaseRequisition 或 Award 为空的记录附加到结果集中。
【问题讨论】:
-
如何只订购结果集的一部分?我想你需要两个查询。