gpt4 book ai didi

c# - 将 T-SQL 转换为 LINQ-to-SQL

转载 作者:数据小太阳 更新时间:2023-10-29 02:28:20 24 4
gpt4 key购买 nike

我在 SQL Server 2008 数据库中有一个表 ContentHistory,其中一列 Content 的数据类型为 xml,NOT NULL。此列存储完整的 XML 文档(一个 Intersection 根节点包含一个或多个 Article 节点:

 <InterSection>
<Article>
<ID>1</<ID>
...other nodes/data
</Article>
<Article>
<ID>2</<ID>
...other nodes/data
</Article>
<Article>
<ID>3</<ID>
...other nodes/data
</Article>
</InterSection>

我编写了获取 XML 数据并将其分解的 T-SQL,以便我为每个 Article 节点获得一个结果行,无论我从 ContentHistory 中选择什么行> 表:

SELECT      T2.Articles.query('.')
FROM ContentHistory
CROSS APPLY Content.nodes('/InterSection/Article') AS T2(Articles)
WHERE ... /* Filter records based on other columns in ContentHistory */

这很好用,但我不想将其作为我的 ASP.NET MVC 应用程序的存储过程调用,因为到目前为止所有其他数据库请求都是使用 LINQ-to-SQL 实现的。

所以问题是如何在 LINQ 中实现这一点(请使用 C# 示例)?

最佳答案

静态男孩,

结合使用 Linq to SQL 和 Linq to XML。

首先从数据上下文中获取 XML 列。假设您已经为 LINQ to XML 添加了 .dbml 文件。

//Lets say you have database called TestDB which has your ContentHistory table
TestDBContext db = new TestDBContext();


//This will return as IQueryable.
var result = db.ContentHistory.Select(p=>p.Content).Where(p=>p.Content == <your filter>);

您可以对 var "result"执行 foreach 循环并获得所需的结果。

和平

关于c# - 将 T-SQL 转换为 LINQ-to-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com