gpt4 book ai didi

c# - 如何在我的 LINQ 中实现对数据库的单次调用?

转载 作者:行者123 更新时间:2023-11-30 19:56:35 24 4
gpt4 key购买 nike

我正在处理我的 Web API 项目。

我在 Controller 类中有这个 Linq To Entity 行:

SiteObject[] objects = await ObjectsRepository.Get().Where(x => x.SiteRegionId == regionId).ToArrayAsync();

return Ok(objects.Select(x => new ObjectBreif
{
IsServiceable = Context.InspectionReview.Any(i => i.ObjectId == x.Id && i.IsNormal == false) ? false : Context.InspectionReview.Any(i => i.ObjectId == x.Id) ? true : (bool?)null
})

我想创建比上面的行更有效的东西,而不是做两次数据库调用。

如果 InspectionReview 表中存在至少一行满足这个条件:

ObjectId = 5 AND  IsNormal = false 

我需要将 IsServiceable 设置为 false 否则,我需要检查 InspectionReview 表中是否存在具有此条件的行:

 ObjectId = 5

如果是,IsServiceable 必须得到 true 否则,null

我通过使用上面的一行代码实现了这一点。但是如您所见,它并不有效,因为我访问了数据库两次。

任何想法任何想法我如何仅通过在一行中调用一次数据库来实现相同的结果我不想为此建议或额外的行创建额外的功能,因为我希望代码保持优雅。

最佳答案

试试这个:

var items = Context.InspectionReview.Where(i => i.ObjectID == x.id).ToList();
bool? IsServicable = (items.length == 0) ?
(bool?)null : !(items.Any(i => i.IsNormal == false));

关于c# - 如何在我的 LINQ 中实现对数据库的单次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504882/

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