从两个表中选择更新 Linq 查询?

Posted

技术标签:

【中文标题】从两个表中选择更新 Linq 查询?【英文标题】:Update Linq query selecting from two tables? 【发布时间】:2014-09-09 08:53:03 【问题描述】:

我正在尝试将 sql 查询转换为 Linq,以便从我的 C# WPF 应用程序中的命令调用。我尝试使用 Linqer,但查询不会翻译。我是 Linq 的新手,并且一直在阅读。你使用 Linq 'JOIN' 来解决这个问题吗?

update P 
set P.versionid=a.versionid
from tbPublicationArticles P, tbarticles a
where P.articleid=a.articlesid

【问题讨论】:

AFAIK 这不能使用默认的 LINQ-to-SQL(或 LINQ-to-entities)“一步”完成,因为您需要先获取数据,更新它然后保存它回到数据库...... 您需要将其写为select,然后循环设置值的结果。 Linq 没有像上面那样的 update 方法。 var q = from tbPublicationArticles P, tbarticles a join on P.articleid equals a.articlesid p into ps from p in ps update new Category = c, p.ProductName ; @BugFreeSolution 呃,那是什么? SQL 语言具有复杂的数据查询集合,包括数据定义语言、数据操作语言、数据控制语言和查询。看起来LINQ 只有Queries 的等效部分。 UPDATE 命令是数据操作语言的一部分。 【参考方案1】:

首先获取您的数据,将 2 个表连接在一起:

var results = from p in db.tbPublicationArticles
              join a in db.tbarticles on p.articleid = a.articlesid
              select new  p, a ;

现在您遍历结果并进行所需的更改:

foreach(var item in results)

    item.p.versionid = item.a.versionid;

别忘了保存您的更改:

db.SaveChanges();

【讨论】:

以上是关于从两个表中选择更新 Linq 查询?的主要内容,如果未能解决你的问题,请参考以下文章

在Asp Core razor页面中使用LINQ从两个表中选择数据

Linq MVC5 MSQL 从包含大量列的表中选择一些列,以便更好更快地查询

LINQ 如何在一对多连接中指定选择某些列

林克。从多个表中选择

Linq 查询从两个表中获取不同的记录

MYSQL 从两个表中选择并减少查询