0

我是 linq 的新手,不明白如何使用 group by 或 order by,并且在使用 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 表的结果,我将不胜感激,我将不胜感激。

4

1 回答 1

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)
于 2013-04-29T15:24:46.787 回答