为什么LINQ orderbydescent不能处理由两个表之间的联合组成的视图?

本文关键字:之间 视图 两个 不能 orderbydescent LINQ 处理 理由 为什么 | 更新日期: 2023-09-27 18:10:11

我在我的SQL Server数据库中有一个视图,这是两个表的UNION ALL。当我从视图中检索特定成员的所有行时,这是我的调用。

 public IEnumerable<MemberTransaction> GetMemberTransactions(string socSecNo)
 {
     var query = Manager.MemberTransactions
         .Where(m => m.SocSecNo == socSecNo)
        .OrderByDescending(m => m.TranDate);
     var results = query.Execute();
     return results;
 }

我从代码中调用Get方法,并将返回的集合分配给网格的数据源属性。这些行不是按照Get方法中的order by语句显示的。它们以随机顺序显示。

我被迫这样做,以使行正确显示。

    IEnumerable<MemberTransaction> transactions = FetchMemberTransactions(currentMember.SocSecNo);
    MemberTransactionBS.DataSource = transactions.OrderByDescending(t => t.TranDate);
    MemberTransactionsGrid.Refresh();
    public IEnumerable<MemberTransaction> FetchMemberTransactions(string socSecNo)
    {
         var transactions = Repository.GetMemberTransactions(socSecNo);
         return transactions;
    }

从联合返回行是否有问题?为什么OrderByDescending不像预期的那样工作?

为什么LINQ orderbydescent不能处理由两个表之间的联合组成的视图?

如果订单从数据库正确返回(像其他答案建议的那样先测试一下),尝试返回IOrderedEnumerable<MemberTransaction>而不是IEnumerable<MemberTransaction>

你说第一种方法不起作用,但它对我有效!所以请尝试第二条路。

    // First Way
    public List<MemberTransaction> GetMemberTransactions(string socSecNo)
    {
        var orderedListOfData = Manager.MemberTransactions
                                .Where(m => m.SocSecNo == socSecNo)
                                .OrderByDescending(m => m.TranDate).ToList();
        return orderedListOfData;
    }

     // Second Way
     public List<MemberTransaction> GetMemberTransactions(string socSecNo)
     {
         var orderedListOfData = (from m in Manager.MemberTransactions
                                  where m.SocSecNo == socSecNo
                                  orderby m.TranDate descending
                                  select m).ToList();
         return orderedListOfData;
      }