是否可以结合LINQ到SQL和LINQ到XML如果表中的列是XML?结合LINQ到SQL和LINQ到XML
回答
如果“合并”你的意思是“必须的LINQ to SQL翻译查询到实际SQL Server XML查询“,那么我相信答案是否定的。但是没有任何东西阻止您提取XML数据并在其上运行本地XML查询。
要回答的更普遍的问题:“我怎么在这种情况下XML列的工作”,最好的方法是创建一个用户定义的函数来处理XML,如果你能。然后你可以让Linq to SQL来执行UDF。
做不到这一点,我会去的存储过程的路线。
的确,但是后来我得到一个内存溢出,因为很多记录被返回。 – 2010-01-13 19:28:40
ouch。看看我的编辑 - 希望UDF或SP可以在这里为你工作。 – Aaronaught 2010-01-13 19:44:44
事实上,存储过程将是我的下一个想法。 – 2010-01-13 19:55:45
是的,这当然是可能的。您可以在单个查询中组合任意数量的IEnumerable资源。例如,这里是你展示如何使用LINQ结合L2S到Excel的文章:
http://blogs.msdn.com/ericwhite/archive/2008/12/03/joining-linq-to-sql-and-linq-to-excel.aspx
兰迪
是的,它很可能在这里是Joeseph Rattz从临LINQ的一个例子:
using (NorthwindDataContext DB = new NorthwindDataContext())
{
string StatesXml =
@"<States>
<State ID=""OR"" Description=""Oregon"" />
<State ID=""WA"" Description=""Washington"" />
<State ID=""CA"" Description=""California"" />
<State ID=""ID"" Description=""Idaho"" />
<State ID=""MT"" Description=""Montana"" />
<State ID=""NM"" Description=""New Mexico"" />
</States>";
XElement States = XElement.Parse(StatesXml);
var Custs = (from c in DB.Customers
where c.Country == "USA"
select c).AsEnumerable().Join(
States.Elements("State"),
c => c.Region,
s => (string)s.Attribute("ID"),
(c, s) => new
{
Customer = c,
State = (string)s.Attribute("Description")
});
foreach (var Cust in Custs)
{
Console.WriteLine("Customer = {0} : {1} : {2}",
Cust.Customer.CompanyName,
Cust.Customer.Region,
Cust.State);
}
这里是什么,将输出:
大湖食品市场:OR:俄勒冈
饥饿的土狼进口商店:OR:俄勒冈州
懒惰K国家商店:WA:华盛顿
让我们停止ñ店:CA:加州
寂寞松林餐厅:OR:俄勒冈
响尾蛇峡谷杂货店:NM:新墨西哥州
保存一批量市场:ID:爱达荷州
大人物:OR:俄勒冈
的饼干盒:MT:蒙大拿
径的Head Gourmet Provisioners:WA:华盛顿
白三叶草市场:WA:华盛顿
你是什么意思的“结合”? – 2010-01-13 17:44:32
Linq到SQxML? :) – 2010-01-13 17:45:04
我的意思是做一个SQL查询使用xpath与LINQ到SQL使用LINQ到XML在它。 – 2010-01-13 19:57:13