繁体   English   中英

如何通过LINQ查询申请订单?

[英]How to apply order by to linq query?

在C#linq中,我有这段代码可以正常工作

    private IQueryable<v_CompanyInquiryInfo> SearchCompany(string pCompanyName)
    {
        var mCompany = from d in db.v_CompanyInquiryInfo
                       where d.CompanyName.ToLower().Equals(pCompanyName)
                       select ((v_CompanyInquiryInfo)d);
        return mCompany;
    }

我有这个

    private IQueryable SearchCompanies(string pValues)
    {
        string mValues = pValues;
        foreach (string lWord in iRestrictedWords)
        {
            mValues.Replace(lWord, "");
        }
        var mSearchArray = pValues.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        var mCompanyCriteria = db.v_CompanyInquiryInfo.AsExpandable().Where(TradingInquiryController.CompanyContainsSearchTerms(mSearchArray));
        var mCompanies = mCompanyCriteria
        .Select(x => new
        {
            x.CompanyName,
            x.CompanyID,
            x.SearchTags,
            Rank = mSearchArray.Sum(s => ((x.SearchTags.Length - x.SearchTags.Replace(s, "").Length) / s.Length))
        });

        var mResults =  mCompanies.OrderByDescending(o => o.Rank).Skip(0).Take(20);
        return mResults;
    }

这也有效。 但是,我希望第二个函数的返回类型为IQueryable<v_CompanyInquiryInfo> 问题是添加了一个Rank新动态列,然后按它排序。 如何应用相同的排序但不为其创建新列,然后将转换应用于v_CompanyInquiryInfo 这样我就可以返回IQueryable<v_CompanyInquiryInfo> 我无法弄清楚它的语法。 它还可以返回所有列。

谢谢

您无需创建该属性:

private IQueryable SearchCompanies(string pValues)
    {
        string mValues = pValues;
        foreach (string lWord in iRestrictedWords)
        {
            mValues.Replace(lWord, "");
        }
        var mSearchArray = pValues.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        var mCompanyCriteria = db.v_CompanyInquiryInfo.AsExpandable().Where(TradingInquiryController.CompanyContainsSearchTerms(mSearchArray));

        var mCompanies = mCompanyCriteria        
.OrderByDescending(x => mSearchArray.Sum(s => ((x.SearchTags.Length - x.SearchTags.Replace(s, "").Length) / s.Length))
;

        //var mResults =  mCompanies.Skip(0).Take(20);
        return mCompanies;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM