gpt4 book ai didi

c# - 如果列在 LINQ 中为空,如何忽略 'where' 和 'order by' 条件

转载 作者:太空狗 更新时间:2023-10-29 23:16:57 25 4
gpt4 key购买 nike

我有交易对象列表,想根据用户当前所在的 View 按特定条件对它们进行排序。

我遇到的问题是,为了在 where 子句中添加条件,首先我需要检查它是否为 null 以防止空指针异常。这会导致列为 null 的记录被过滤掉(我想将它们包含在列表底部)。

如果该列为 null,我如何修改查询以使其忽略条件(where 和 order by)并仍然将它们追加到结果集中?

这是一个示例查询:

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 为 null 的记录附加到结果集中。

最佳答案

您只需修改您的 OrderByThenBy 子句:

.OrderBy(t => t.Award == null || t.Award.ContractNumber == null)
.ThenBy(t => t.Award == null ? "" : ToSafeString(t.Award.ContractNumber))
.ThenBy(t => t.PurchaseRequisition == null ? ""
: ToSafeString(t.PurchaseRequisition.RequisitionedBy.FullName));

现在您可以完全删除 Where 子句。

关于c# - 如果列在 LINQ 中为空,如何忽略 'where' 和 'order by' 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com