从两个表中选择更新 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从两个表中选择数据