Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【文章推荐】如何调试 LINQ #757

Closed
gaufung opened this issue Nov 7, 2024 · 1 comment
Closed

【文章推荐】如何调试 LINQ #757

gaufung opened this issue Nov 7, 2024 · 1 comment

Comments

@gaufung
Copy link
Collaborator

gaufung commented Nov 7, 2024

https://michaelscodingspot.com/debug-linq-in-csharp/

@gaufung
Copy link
Collaborator Author

gaufung commented Dec 22, 2024

image

Linq 是 C# 语言中的特色,我们通常会使用链式的方式将一连串的 Linq 语句组合起来达到想要的目的。但是这种方法有一个问题是调试起来比较麻烦,那么有什么办法解决这个问题呢?

  • 使用 Visual Studio 中的 QuickWatch

QuickWatchC# 中高级调试功能,可以在断点处,右键选择 Quickwatch 方式,在 QuickWatch 中输入查询语句,可以动态显示查询结果。

image

  • 使用条件断点或者执行断点

当我们使用断点的功能的时候,可以选择断点发生的条件,或者每次执行的额外的操作,比如日志。

  • 使用日志中间件

Debug 模式下,将调试信息输出到 Debug 窗口

public static IEnumerable<T> LogLINQ<T>(this IEnumerable<T> enumerable, string logName, Func<T, string> printMethod)
{
#if DEBUG
    int count = 0;
    foreach (var item in enumerable)
    {
        if (printMethod != null)
        {
            Debug.WriteLine($"{logName}|item {count} = {printMethod(item)}");
        }
        count++;
        yield return item;
    }
    Debug.WriteLine($"{logName}|count = {count}");
#else   
    return enumerable;
#endif
}
  • 使用 OzCode Linq 功能

OzCode 是 Visual Studio 的插件,它可以辅助我们进行 debug, 在 Linq 中,对于每个查询,可以显示其操作之后的数据集。

image

@gaufung gaufung closed this as completed Dec 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant