2010-07-08 96 views
0

我想使用linq從datatable中獲取數據。我在Cache中有2個表,並且我想要連接這些表,然後從resultset中獲取值。我粘貼了原始Sql查詢和我的linq查詢here.My linq查詢返回nothing.Where做我錯過?我原來的SQL查詢返回1行,但Q1什麼Linq加入問題

「原始SQL查詢

select b.FL_DSD from LU_CUSTOMER a, LU_TYPE b where a.ID_TYPE=b.ID_TYPE and a.ID_NO=355 

我的LINQ查詢

Dim q1 = From c In cls_StaticData.Get_Data(cls_StaticData.Tables.LU_CUSTOMER) Where c.Item("ID_NO") = 355 Join _ 
o In cls_StaticData.Get_Data(cls_StaticData.Tables.LU_TYPE) On c.Item("ID_TYPE") Equals o.Item("ID_TYPE") 

回答

0

你確定你的第二張桌子h作爲與您的第一個表中的值匹配的ID_TYPE記錄?你可能在內部加入你的數據。像這樣將Linq查詢轉換爲LEFT OUTER JOIN並查看是否返回數據。如果是這樣,您要麼從右側的數據表中丟失查找,要麼您的Equals比較在某處遇到問題。

Dim q1 = From c In cls_StaticData.Get_Data(cls_StaticData.Tables.LU_CUSTOMER) _ 
Where c.Item("ID_NO") = 355 _ 
Group Join o In cls_StaticData.Get_Data(cls_StaticData.Tables.LU_TYPE) _ 
On c.Item("ID_TYPE") Equals o.Item("ID_TYPE") _ 
Into joinedMatches = Group _ 
From matchedRight In joinedMatches.DefaultIfEmpty() _ 
Select New With {.Left = c, .Right = matchedRight}