gpt4 book ai didi

linq - 如何将复杂的查询分解为不同的方法以降低代码复杂性

转载 作者:行者123 更新时间:2023-12-01 19:43:59 25 4
gpt4 key购买 nike

我有一个复杂的查询,需要将其分解为不同的方法才能满足 NFR 代码复杂性标准。

我知道仅仅满足所需的标准是不好的,但是这个查询可以分解成更小的 block 吗?

var query = (from a1 in a 
join b1 in b
on a1.id1 equals b1.id1
join c1 in c
on b1.id equals c1.id
join d1 in d
on c1.id1 equals d1.id
where (d1.Contains("text"))
select d1);

最佳答案

根据您使用的是 Linq-to-SQL 还是 Linq-to-Entities,关系可能已经通过代码表达,您可以简单地使用导航属性:

from d1 in d 
where d1.C.B.A != null
&& d1.Contains("text")
select d1;

Entity Framework 将知道忽略代码中可能的空引用异常,因为它将将此表示为查询并且不会实际运行代码。

如果这是不可能的,我假设您正在使用 Visual Studio 2012 代码复杂性功能,该功能不会考虑代码复杂性,而是考虑IL 复杂性。 Linq 查询往往会在幕后产生大量复杂性,而这在代码中是不可见的。

我会忽略复杂性警告,因为将这个非常可读的查询分解为多个方法是人为地尝试修复可读性可能是问题的警告,但会增加类级别代码的复杂性。

关于linq - 如何将复杂的查询分解为不同的方法以降低代码复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048675/

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