代码之家  ›  专栏  ›  技术社区  ›  Jaxidian

无法对我的EF4数据执行orderby

  •  1
  • Jaxidian  · 技术社区  · 15 年前

    我有一个使用stes访问ef4的查询,我在用户定义的排序方面遇到了问题。在调试过程中,我删除了动态排序,并对其进行了硬编码,但仍然存在这个问题。如果我交换/取消 var results = xxx 线在 GetMyBusinesses() ,我的结果没有任何不同的排序-它们总是按升序排序。

    FYI Name 是一个 varchar(200) 我的业务表上的SQL 2008中的字段。

    private IQueryable<Business> GetMyBusinesses(MyDBContext CurrentContext)
    {
    
        var myBusinesses = from a in CurrentContext.A
                           join f in CurrentContext.F
                               on a.FID equals f.id
                           join b in CurrentContext.Businesses
                               on f.BID equals b.id
                           where a.PersonID == 52
                           select b;
    
        var results = from r in myBusinesses
                  orderby "Name" ascending
                  select r;
    
        //var results = from r in results
        //          orderby "Name" descending
        //          select r;
    
        return results;
    }
    
    private PartialEntitiesList<Business> DoStuff()
    {
        var myBusinesses = GetMyBusinesses();
        var myBusinessesCount = GetMyBusinesses().Count();
    
        Results = new PartialEntitiesList<Business>(myBusinesses.Skip((PageNumber - 1)*PageSize).Take(PageSize).ToList())
                      {UnpartialTotalCount = myBusinessesCount};
    
        return Results;
    }
    
    public class PartialEntitiesList<T> : List<T>
    {
        public PartialEntitiesList()
        {
        }
    
        public PartialEntitiesList(int capacity) : base(capacity)
        {
        }
    
        public PartialEntitiesList(IEnumerable<T> collection) : base(collection)
        {
        }
    
        public int UnpartialTotalCount { get; set; }
    }
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Jaxidian    15 年前

    显然 OrderBy 子句作为字符串是无效的(我以为我以前测试过它吗?!!)如果我将LINQ查询更改为以下值,那么它会工作:

    var results = from r in myBusinesses
              orderby r.Name ascending
              select r;
    

    这并不能解决我的问题,但它确实回答了这个特定的问题。我将发布另一个与我的问题相关的问题。