我想使用linq从datatable获取数据。我在Cache中有2个表,我想加入这些表然后从resultset获取值。我在这里粘贴了原始的Sql查询和我的linq查询。我的linq查询什么也没有返回。我在哪里错过?我原来的sql查询返回1行,但q1什么都不是
'原始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 :(得分:0)
您确定第二个表的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}