# 使用 扩展库 Microsoft.DotNet.Interactive.ExtensionLab
## 添加 Nuget 包, 成功后有用法摘要提示
```csharp
// 可以先添加包源
#i "nuget:https://api.nuget.org/v3/index.json"

//添加 Nuget 包
#r "nuget: Microsoft.DotNet.Interactive.ExtensionLab,*-*"
```
## 使用 #!linqify 创建强类型的 数据帧
#!linqify magic命令将 Microsoft.Data.Analysis.DataFrame 变量替换为生成的强类型数据帧,从而允许对包含的数据使用LINQ操作。
```csharp
#!linqify frame --show-code

```
## ExplainCode
这个扩展使用 Mermaid 内核从 csharp 代码生成序列图
## 使用 #!inspect 命令,检查代码编译详细信息!
#!inspect 命令,允许您查看C#单元格代码的反编译、IL和JIT Asm. 注意:深色模式下,展示区顶部的Tab[C# | IL JIT | ASM]不明显,但可以正常点击切换,或者换个VSCode主题。
```csharp
#!inspect
foreach(var x in Enumerable.Range(1,10))
{
    Console.WriteLine(x);
}
```
## 使用 #!record命令来保存您运行的代码的副本
一旦您使用 #!recore 启用转录本记录,每个代码提交(包括重新运行的单元格)都记录在指定的文件中。所使用的JSON格式与.NET Interactive stdio和http API识别的格式相同,可用于通过自动化回放交互式会话。
```csharp
#!record --output recore.json
//会在笔记所在的目录生成 recore.json 文件
```
```csharp
Console.WriteLine("#!record");
```
## 查询 SQLite 数据库
此扩展添加了对使用 #!connect sqlite 命令连接到SQLite数据库的支持!有关详细信息,请使用  #!sql 魔术命令。
```sql
#!connect sqlite --kernel-name MySQLiteDemo "Data Source=SQLiteDemo.db"

/*
    相对目录位置
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=Database\SQLiteDemo.db;"
    
    缓存共享
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=Database\SQLiteDemo.db;Cache=Shared;"

    使用带密码
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=SQLiteDemo.db;Cache=Shared;Password=MyEncryptionKey;"
    
    只读模式
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=SQLiteDemo.db;Mode=ReadOnly"

    读写创建模式
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=SQLiteDemo.db;Mode=ReadWriteCreate"

    读写模式
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=SQLiteDemo.db;Mode=ReadWrite"

    私有内存模式
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=:memory:"

    共享内存模式
    #!connect sqlite --kernel-name MySQLiteDemo "Data Source=Sharable;Mode=Memory;Cache=Shared"
*/
```
```sql-MySQLiteDemo
#!sql-MySQLiteDemo

select * from person;
```