找出 LINQPad 查询中某些代码的定义位置

Finding out where some code in a LINQPad query is defined

我在 LINQPad 查询中有以下 C# 代码段:

.Select(x => new LocationDistrict
    { ...

当我将鼠标悬停在 LocationDistrict 上时,工具提示显示:

LINQPad.User.LocationDistrict

如何找出 User.LocationDistrict 是从哪里拉进来的?在右键单击上下文菜单中,转到定义 F12 选项显示为灰色。

TL;DR:LINQPad 根据连接的数据库中的 table 自动生成 类。每个 table 中行的 类 都放在 LINQPad.User 命名空间中。

例如,在以下示例中,我使用的是 AdventureWorks2012 数据库。当我连接到它时,我可以在“连接”窗格中看到许多 "tables":

我可以将它们拖到查询中 window 并开始查询:

本例中的地址类型为 System.Data.Linq.Table<Address>,其中 Address 的类型为 LINQPad.User.Address:

因此,在您的案例中,LocationDistrict 似乎是 table 中具有相似名称的单个记录的映射。它在“连接”窗格中将被称为 LocationDistricts,但由于 LINQPad 进行了一些命名规范化,因此在您的实际数据库中可以被称为 LOCATION_DISTRICT

我猜 LINQPad 的制造商需要一些地方来放置这些类型(以避免命名冲突),并决定将 LINQPad.User 作为 acceptable 命名空间。