假设我有两张表几乎相同的表
TableFrom
ID bigint
Username nvarchar
Password nvarchar
Name nvarchar
TableTo
ID bigint
Username nvarchar
Password nvarchar
现在我想生成一个Insert into SQL查询(使用参数),但仅适用于两个表中相同的那些字段。 ( id,用户名,密码)
我考虑过将这两个表结构查询读入dataTable,然后在LINQ循环之后获取在bot表中相同的字段数组?
Dim dtFrom as new datatable
dim dtTo as NEW dataTable
dtTo = _LoadAvaliableToFields()
dtFrom = _loadAvailableFromFields()
LINQ怎么样?
之后我需要使用参数将Insert查询添加到数据库。有没有更简单的方法来做到这一点?
答案 0 :(得分:0)
使用查询语法,“select”查询与SQL查询非常相似:
Dim query =
From idFrom In TableFrom _
Join idTo In TableTo _
On New With {Key .ID = idFrom.ID, Key .U = idFrom.Username, Key .P = idFrom.Password} _
Equals New With {Key .ID = idTo.ID, Key .U = idTo.Username, Key .P = idTo.Password} _
Select idFrom
要执行插入,您需要在上下文中将对象添加到相应的集合,然后调用SaveChanges
。
我会注意到直接SQL查询会更有效:
INSERT INTO {destination}
SELECT f.ID,f.Username,f.Password
FROM TableFrom f
INNER JOIN TableTo t
ON f.ID = t.ID AND f.Username = t.Username AND f.Password = t.Password