LINQ循环并获取相同记录的结果

时间:2015-12-08 17:19:52

标签: sql-server vb.net linq

假设我有两张表几乎相同的表

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查询添加到数据库。有没有更简单的方法来做到这一点?

1 个答案:

答案 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