0

私はlinqを初めて使用し、group byまたはorder byの使用方法を理解していません.Distinctを使用する場合、order byはできません。これは、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グループを取得する方法を誰かが指摘できれば幸いです。

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 に答える