为什么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
不像预期的那样工作?
如果订单从数据库正确返回(像其他答案建议的那样先测试一下),尝试返回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;
}