gpt4 book ai didi

c# - 使用 LINQ 查询自动检查 NULL 关系

转载 作者:可可西里 更新时间:2023-11-01 08:49:02 25 4
gpt4 key购买 nike

我正在使用 LINQ to SQL 来处理我正在处理的应用程序的数据库查询。

为了这个例子的目的,假设我有一些像这样的表

- Company
- Product
- Item
- Order

假设一个 Company 有 0 个或多个 Products,一个 Product 有 0 个或多个 Items,并且 Item 有 0 个或多个 Orders

现在让我获得一个 Orders 列表,类似于:

IQueryable<Order> myOrders = GetMyOrders();

现在假设我想查询特定 Company.Name 的订单,但有一种情况,每个表的父 ID 可以是 NULL(我知道这不我的示例数据似乎合乎逻辑,但这只是一个示例)

假设没有 NULL 父 ID,我可以这样做:

var filteredOrders = myOrders.Where(x => x.Item.Product.Company.Name == "Company1");

这会工作正常,但是,因为可能有 NULL 父 ID 值,我需要检查每个父对象以确保它在查询下一个之前不为 null parent (否则我会得到一个异常(exception))。所以我做了类似的事情:

var filteredOrders = myOrders.Where(x => 
x.Item != null &&
x.Item.Product != null &&
x.Item.Product.Company != null &&
x.Item.Product.Company.Name == "Company1");

那么我的问题:是否有比必须包括所有 null 检查更好的方法(在可读性和易于编码方面)来做到这一点?在此过程中发现的任何无效 parent 都应从结果列表中排除。

请不要建议防止空 parent ,数据库不会改变(无论如何都是完全有效的)

最佳答案

有已知的模式(参见空对象模式)。您也可以阅读 this article

关于c# - 使用 LINQ 查询自动检查 NULL 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464134/

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