LINQ to SQL查询没有正确排序,请帮忙

Met*_*uru 0 c# linq-to-sql

    var temp = (from assetVisit in db.AssetVisits
                join assetBundle in db.AssetBundles on assetVisit.AssetID equals assetBundle.AssetID
                join groupBundle in db.GroupBundles on assetBundle.BundleID equals groupBundle.BundleID
                join userGroup in db.UserGroups on groupBundle.GroupID equals userGroup.GroupID
                where assetVisit.CompanyID == companyID &&
                      userGroup.UserID == userID
                select new { AssetID = assetVisit.AssetID, Count = assetVisit.AccessCounter }).Distinct();

    IQueryable<Asset> final = (from t in temp
                              join asset in db.Assets on t.AssetID equals asset.AssetID
                              where asset.IsActive == true
                                    && asset.AssetTypeID == assetType
                                    && asset.ShowInResults == true
                                    && (asset.CompanyID == companyID || asset.CompanyID == -12081974)
                              orderby t.Count descending
                              select asset).Except(from companyAssets in db.Assets
                                            join copiedAssets in db.Assets on companyAssets.AssetID equals copiedAssets.OriginalAssetID
                                            where copiedAssets.CompanyID == companyID && companyAssets.CompanyID == -12081974 && copiedAssets.IsActive == true
                                            select companyAssets);


    return final.Take(limit);
Run Code Online (Sandbox Code Playgroud)

好吧所以它假设根据t.Count按顺序回馈资产,但我认为它可能不起作用,因为.Count实际上不是资产的一部分,这是被选中的,但我不知道如何解决这个问题.

正如你所看到的那样有一个assetVisits表和一个资产表,我需要按照assetVisits.AccessCount的顺序取回资产,但是我无法让它工作,到底是什么?

Mar*_*ers 8

几个小时前你问过一个几乎相同的问题,答案是一样的:你选择了你想要订购的行之后进行排序.

更改:

return final.Take(limit);
Run Code Online (Sandbox Code Playgroud)

至:

var finalOrdered = from asset in final
    join assetVisit in db.AssetVisits on asset.AssetID equals assetVisit.AssetID
    orderby assetVisit.AccessCounter
    select asset;

return finalOrdered.Take(limit);
Run Code Online (Sandbox Code Playgroud)

您也可以从自己的代码中删除过早的'orderby',因为它没有做任何事情.