(from assetVisit in AssetVisits
join assetBundle in AssetBundles on assetVisit.AssetID equals assetBundle.AssetID
join groupBundle in GroupBundles on assetBundle.BundleID equals groupBundle.BundleID
join userGroup in UserGroups on groupBundle.GroupID equals userGroup.GroupID
where assetVisit.CompanyID == 32 &&
userGroup.UserID == 75
orderby assetVisit.AccessCounter descending
select assetVisit).Distinct()
注意'order by'然而,当数据回来时,它是由assetVisit表的PK命令的,是什么给出的?
SQL PER LINQPAD:
-- Region Parameters
DECLARE @p0 Int SET @p0 = 32
DECLARE @p1 Int SET @p1 = 75
-- EndRegion
SELECT DISTINCT [t0].[AssetVisitID], [t0].[CompanyID], [t0].[AssetID], [t0].[AccessCounter], [t0].[CreateBy], [t0].[CreateDate], [t0].[ModifyBy], [t0].[ModifyDate]
FROM [AssetVisits] AS [t0]
INNER JOIN [AssetBundles] AS [t1] ON [t0].[AssetID] = ([t1].[AssetID])
INNER JOIN [GroupBundles] AS [t2] ON ([t1].[BundleID]) = [t2].[BundleID]
INNER JOIN [UserGroups] AS [t3] ON [t2].[GroupID] = [t3].[GroupID]
WHERE ([t0].[CompanyID] = @p0) AND ([t3].[UserID] = @p1)
答案 0 :(得分:3)
您的“order by”应该在之后。
(from assetVisit in AssetVisits
join assetBundle in AssetBundles on assetVisit.AssetID equals assetBundle.AssetID
join groupBundle in GroupBundles on assetBundle.BundleID equals groupBundle.BundleID
join userGroup in UserGroups on groupBundle.GroupID equals userGroup.GroupID
where assetVisit.CompanyID == 32 &&
userGroup.UserID == 75
select assetVisit).Distinct().OrderByDescending(assetVisit => assetVisit.AccessCounter);
或者如果您希望继续使用查询语法,可以这样写:
var innerQuery =
(from assetVisit in AssetVisits
join assetBundle in AssetBundles on assetVisit.AssetID equals assetBundle.AssetID
join groupBundle in GroupBundles on assetBundle.BundleID equals groupBundle.BundleID
join userGroup in UserGroups on groupBundle.GroupID equals userGroup.GroupID
where assetVisit.CompanyID == 32 &&
userGroup.UserID == 75
select assetVisit).Distinct();
var query = from assetVisit in innerQuery
orderby assetVisit.AccessCounter descending
select assetVisit;
答案 1 :(得分:0)