我必须制作SELECT
一些实体(表),这些实体需要大量的JOIN。
当我在SQL Server Management Studio中编写该查询时,它可以工作,但是在带有LINQ的C#代码中,没有任何匹配项。
这里有一些例子:
SELECT
dbo.Person.PersonID,
dbo.Person.txtFirstName,
dbo.Person.txtLastName,
dbo.Person.txtAccount
FROM
[dbo].[Person]
INNER JOIN
dbo.CustomFieldData_Person ON dbo.Person.PersonID = dbo.CustomFieldData_Person.PersonID
INNER JOIN
dbo.CustomFieldData ON dbo.CustomFieldData_Person.CustomFieldDataID = dbo.CustomFieldData.CustomFieldDataID
INNER JOIN
dbo.CustomFieldListData ON dbo.CustomFieldData.CustomFieldDataID = dbo.CustomFieldListData.CustomFieldDataID
INNER JOIN
dbo.CustomListItem ON dbo.CustomFieldListData.CustomListItemID = dbo.CustomListItem.CustomListItemID
WHERE
[dbo].[CustomListItem].[CustomListItemID] = 218
AND [dbo].[CustomListItem].[CustomListID] = 41
AND [dbo].[Person].[InstanceID] = 80
符合条件:30
List<Person> result =
(from p in DB_Instance_Singleton.getInstance.Person
join cfdp in DB_Instance_Singleton.getInstance.CustomFieldData_Person on p.PersonID equals cfdp.PersonID
join cfd in DB_Instance_Singleton.getInstance.CustomFieldData on cfdp.CustomFieldDataID equals cfd.CustomFieldDataID
join cfld in DB_Instance_Singleton.getInstance.CustomFieldListData on cfd.CustomFieldDataID equals cfld.CustomFieldDataID
join cli in DB_Instance_Singleton.getInstance.CustomListItem on cfld.CustomListItemID equals cli.CustomListItemID
where (cli.CustomListItemID == iCustomListItemID)
&& (cli.CustomListID == iCustomListID)
&& (p.InstanceID == iInstanceID)
select p).ToList<Person>();
符合条件:0
SELECT dbo.Person.PersonID,
dbo.Person.txtFirstName,
dbo.Person.txtLastName,
dbo.Person.txtAccount
FROM [dbo].[Person]
INNER JOIN dbo.CustomFieldData_Person ON dbo.Person.PersonID = dbo.CustomFieldData_Person.PersonID
INNER JOIN dbo.CustomFieldData ON dbo.CustomFieldData_Person.CustomFieldDataID = dbo.CustomFieldData.CustomFieldDataID
INNER JOIN dbo.CustomFieldListData ON dbo.CustomFieldData.CustomFieldDataID = dbo.CustomFieldListData.CustomFieldDataID
INNER JOIN dbo.CustomListItem ON dbo.CustomFieldListData.CustomListItemID = dbo.CustomListItem.CustomListItemID
WHERE [dbo].[Person].[InstanceID] = 80
符合条件:142
List<Person> result =
(from p in DB_Instance_Singleton.getInstance.Person
join cfdp in DB_Instance_Singleton.getInstance.CustomFieldData_Person on p.PersonID equals cfdp.PersonID
join cfd in DB_Instance_Singleton.getInstance.CustomFieldData on cfdp.CustomFieldDataID equals cfd.CustomFieldDataID
join cfld in DB_Instance_Singleton.getInstance.CustomFieldListData on cfd.CustomFieldDataID equals cfld.CustomFieldDataID
join cli in DB_Instance_Singleton.getInstance.CustomListItem on cfld.CustomListItemID equals cli.CustomListItemID
where (p.InstanceID == iInstanceID)
select p).ToList<Person>();
符合条件:142
看来CustomListItem
该WHERE
子句中实体的列存在问题。
但是我不明白为什么。
感谢JamieD77,我发现了我的错误。LINQ-SQL是正确的,但是我在C#代码中交换了两个参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句