tansci/.claude/skills/magic-script/references/linq.md
xuewuerduo f468d532b1 feat: 初始化tansci资产管理项目
包含以下模块:
- antdv-next-admin: Vue 3 + TypeScript + Ant Design Vue 管理后台
  - 设备/许可证/配件/耗材 CRUD 管理页面
  - 基础数据管理 (分类/位置/制造商/型号/供应商)
  - 业务管理 (故障报修/盘点/资产分配/资产申请/交易记录)
  - 下拉选项改造 (ID输入框 → 搜索下拉选择)
  - 资产状态字典化 (接入sys_dict系统)
  - 界面文案优化 (设备→资产, 在库/在用/维修中/已报废)
  - 修复 console 警告 (popupClassName, 重复组件注册)
- our-itam: Java Spring Boot + magic-api 后端服务
- fantastic-admin: 前端底层框架 (pnpm monorepo)
- ciyo-itasset: CIYO 资产模块
- magic-script-skill: Claude Code skill 定义
- .claude: 对话历史记录

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-17 21:41:22 +08:00

1.9 KiB
Raw Blame History

Linq

基本语法

    select
        tableAlias.*|[tableAlias.]field[ columnAlias]
        [,tableAlias.field2[ columnAlias2][,]]
    from expr[,] tableAlias
    [[left ]join expr tableAlias2 on condition]
    [where condition]
    [group by tableAlias.field[,...]]
    [having condition]
    [order by tableAlias.field[asc|desc][,tableAlias.field[asc|desc]]]
    [limit expr [offset expr]]

执行步骤

  • 先从from子句创建虚拟表VT1
  • 处理join创建虚拟表VT2筛选符合条件condition的行加入到虚拟表VT2中
  • 处理where 将符合condition的行加入虚拟表VT1中
  • 处理group by 对虚拟表VT1、VT2进行分组操作将符合having condition的值加入虚拟表VT3中
  • 处理select 从VT3中选择指定的列加入虚拟表VT4中
  • 处理order by 对虚拟表VT4进行排序
  • 处理limit

select子句

select t.name,sum(t.score) score,t.*

select 中带有聚合函数的应该有group by语句否则不会进行聚合处理

from子句

-- 以下三种方式均可(别名是必须的)
from [{name: 'Gitee'},[name:'Github']] t
from results t
from {name:'Gitee'} t

from 跟着的必须是List或者Map

join子句

-- 以下三种方式均可(别名是必须的)
[left] join [{name: 'Gitee'},[name:'Github']] t1 on t1.name = t.name
[left] join results t1 on 1 = 1
[left] join {name:'Gitee'} t1 on t1.name = 'Gitee' and 1=1

where子句

-- or 等价于|| and 等价于 && 可以混合使用。
where t.name = 'Gitee' or t.name = 'Github' and 1=1 && 2=2

group by子句

group by t.name, t1.xxx

having 子句

having count(t.name) > 1

order by子句

-- asc可以不写默认是asc
order by t.name desc,t.xxx

limit 子句

limit 1 -- 固定取第一项返回值会是对象而非List
limit pageSize offset (page - 1) * pageSize
limit pageSize