是否可以結合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