我是linq的新手,并且不了解如何使用该组或按顺序使用该组,并且在使用Distinct时,您无法按顺序排序。 这是我想要转换为LINQ的SQL:
SELECT enrStaff.LastName, enrStaff.FirstName, enrStaff.MiddleInit, enrStaff.FaNo
FROM usrUserBldgList INNER JOIN
entEntity ON usrUserBldgList.EntID = entEntity.EntID INNER JOIN
enrStaff ON entEntity.FANo = enrStaff.FaNo
WHERE (usrUserBldgList.UserID = Param1)
GROUP BY enrStaff.LastName, enrStaff.FirstName, enrStaff.MiddleInit, enrStaff.FaNo
这是我在LINQ中尝试过的,但是列表不能通过
排序(From sl In _db.Staffs _
Join e In _db.Entities On e.FANo Equals sl.FaNo _
Join ubl In _db.UserBldgLists On ubl.EntID Equals e.EntID _
Where (ubl.UserID = Param1) _
Select sl).Distinct()
这是我尝试进行分组,这给了我一个IQueryable错误
(From ubl In _db.UserBldgLists _
Join e In _db.Entities On e.EntID Equals ubl.EntID _
Where ubl.EntID = Param1 _
Group Join sl In _db.Staffs On e.FANo Equals sl.FaNo _
Into staffers = Group _
Select staffers)
如果有人能指出如何让LINQ小组给我一个Staff表的结果,我将不胜感激,我将非常感激。
答案 0 :(得分:0)
由于您的SQL没有进行任何聚合,因此它有效地在分组条件中获取了一个独特的值列表,因此您的第一个查询应该有效。
您的原始查询没有做任何排序,因此不清楚您之后想要做什么。
要添加排序,您可以将其添加到查询语法部分:
(From sl In _db.Staffs _
Join e In _db.Entities On e.FANo Equals sl.FaNo _
Join ubl In _db.UserBldgLists On ubl.EntID Equals e.EntID _
Where (ubl.UserID = Param1) _
Order By sl.LastName, sl.FirstName _
Select sl).Distinct()
事后使用Linq-to-Objects:
(From sl In _db.Staffs _
Join e In _db.Entities On e.FANo Equals sl.FaNo _
Join ubl In _db.UserBldgLists On ubl.EntID Equals e.EntID _
Where (ubl.UserID = Param1) _
Order By sl.LastName, sl.FirstName
Select sl).Distinct() _
.OrderBy(Function(o) o.LastName) _
.ThenBy(Function(o) o.FirstName)