gpt4 book ai didi

c# - 调试 LINQ 查询

转载 作者:IT王子 更新时间:2023-10-29 04:52:44 24 4
gpt4 key购买 nike

我们最近一直在使用 LINQ 做很多工作,主要是在 LINQ-to-Objects 方面。不幸的是,我们的一些查询可能有点复杂,尤其是当它们开始涉及多个序列的组合时。当您收到开始看起来像这样的查询时,可能很难确切地说出发生了什么:

IEnumerable<LongType> myCompanies =       relevantBusiness.Children_Companies
.Select(ca => ca.PR_ContractItemId)
.Distinct()
.Select(id => new ContractedItem(id))
.Select(ci => ci.PR_ContractPcrId)
.Distinct()
.Select(id => new ContractedProdCompReg(id))
.Select(cpcr => cpcr.PR_CompanyId)
.Distinct();

var currentNewItems = myCompanies
.Where(currentCompanyId => !currentLic.Children_Appointments.Select(app => app.PR_CompanyId).Any(item => item == currentCompanyId))
.Select(currentId => new AppointmentStub(currentLic, currentId))
.Where(currentStub=>!existingItems.Any(existing=>existing.IsMatch(currentStub)));


Items = existingItems.Union(newItems).ToList();

等等等等......

即使在调试时,也很难分辨谁在什么时候对谁做什么。除了在序列上无偿调用“ToList”以获取我可以更轻松地检查的内容之外,有人对如何调试“复杂的”LINQ 有任何好的建议吗?

最佳答案

这样的查询似乎表明您没有很好地选择合适的数据结构,或者没有很好地封装和分离任务。我建议看一下它并将其分解。

不过,一般来说,如果我想调试一个明显不正确的 LINQ 查询,我会把它分解成子查询并在调试器中一次一个地检查结果。

关于c# - 调试 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952796/

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