0

我的 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没有按预期工作?

4

2 回答 2

0

如果从数据库中正确返回了订单(首先测试这个,就像其他答案一样)尝试返回一个 IOrderedEnumerable<MemberTransaction>而不是IEnumerable<MemberTransaction>.

于 2014-06-25T17:05:19.277 回答
-1

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

    // 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;
      }
于 2014-06-25T16:46:44.297 回答