gpt4 book ai didi

entity-framework - 如何编写需要子查询的 Linq 查询?

转载 作者:行者123 更新时间:2023-12-04 07:22:28 25 4
gpt4 key购买 nike

我需要从数据库中提取有关支持票证的一些信息。每一张票都与一个医学成像系统相关联,并且每个系统可能有也可能没有与之相关的服务保障。如果是这样,可能会有多个服务范围条目,但只有一个我们感兴趣。

我知道这不是有效的 Linq,但我真正想做的是以下...

var tickets = cxt.SupportTickets
.Select( t => new {
ID = t.ID,
Customer = t.Customer.Name,
var cover = t.System.CoverItems.FirstOrDefault(ci => // some query)
CoverLevel = cover?.Level.Name,
Expiry = cover?.Expiry.ToLongDateString()
});

有什么办法可以做到这一点吗?我知道我可以为封面中我想要的每一位数据重复 t.CoverItems.FirstOrDefault(...) 位,但是除了这会产生绝对可怕的代码困惑之外,它还会效率非常低,因为它需要对每张票多次执行相同的子查询。

我想过将其全部分解为 foreach 循环,但后来我不知道如何创建 tickets 集合。我无法创建一个空集合,然后向其中添加对象,因为它们是匿名类型,而且我不想考虑如何指定泛型类型!

有人有什么想法吗?

最佳答案

您可以提高可读性:

var tickets = cxt.SupportTickets
.Select(t => new {
Ticket = t,
CoverItem = t.System.CoverItems.FirstOrDefault(ci => // some query)
})
.Select(x => new {
ID = x.Ticket.ID,
Customer = x.Ticket.Customer.Name,
CoverLevel = x.CoverItem?.Level.Name,
Expiry = x.CoverItem?.Expiry.ToLongDateString()
});

关于entity-framework - 如何编写需要子查询的 Linq 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657067/

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