【问题标题】:How to use Linq query Result in OrderBy?如何在 OrderBy 中使用 Linq 查询结果?
【发布时间】:2014-07-18 18:13:25
【问题描述】:

这里我有一个场景来获取本月(本月)的日期数据

Excepted Result
     Date_time        sum(collection.amountreceived )  Sum(bank_deposit.depositamount)
       1/07/2014                 2000                 1000
       2/07/2014                 3000                 3000

架构

bank_deposit

   agentid         (nvarchar(30))   
   depositamount   (DECIMAL(10,0))    
   date_time       (TIMESTAMP)

collection

   customeridn       (varchar(30))
   amountreceived    (DECIMAL(10,0))
   date_time         (TIMESTAMP)  
   agentid           (nvarchar(30))

这里我使用union来获取一列中的日期时间列数据

 var unionDateColumn = ((from agent in db.collections select agent.Date_Time)
        .Union(from u in db.bank_deposit select u.Date_Time)).ToList();

我如何将这个 unionDateColumn 数据用于 orderby 并获得预期的输出?

以下是金额总和的查询,但这里我的问题是如何

var model = (from coll in db.collections.Where(e => e.AgentID == item.AgentID)
                          let depositedAmount = db.bank_deposit.Where(d => d.AgentID == item.AgentID ).Sum(c => c.DepositedAmount) == null ? 0
                          : db.bank_deposit.Where(d => d.AgentID == item.AgentID).Sum(x => x.DepositedAmount)
                          let collectionAmount = db.collections.Where(c => c.AgentID == item.AgentID).Sum(c => c.AmountReceived) == null ? 0
                          : db.collections.Where(v => v.AgentID == item.AgentID).Sum(m => m.AmountReceived)
                          select new GetBalanceAmount
                          {
                              DepositedAmount = depositedAmount,
                                 CollectionAmount = collectionAmount
                          });

【问题讨论】:

  • 我有两个表,两个表都有重复的数据,所以我在这里使用 union for date_time 字段现在 unionDateColumn 查询通过使用此列来返回两列的日期(这是动态列)如何使用 orderby 子句下面的模型查询以获得预期的输出?

标签: c# linq


【解决方案1】:

我假设您想按 date_time 排序结果

var result = unoinDateColumn.OrderBy(t=>t.Date_Time).ToList().;

【讨论】:

  • 不,我想按 unoinDateColumn 排序,它返回两列的日期,请查看我的预期输出
  • model.ToList().OrderByDescending(unoinDateColumn).FirstOrDefault();我试过这样
【解决方案2】:

为什么是 FirstOrDefault ?我假设你想要每一行。

Sajeetharan 的例子: var 结果 = unoinDateColumn.OrderBy(t=>t.Date_Time).ToList(); 结果与“select * from unionDateColumn order by DateTime”相同

你的例子: model.ToList().OrderByDescending(unoinDateColumn).FirstOrDefault();

同“Select * from model orderby unionDateColumn” 请问您为什么要单独处理每一列?在一个大数组中插入?

在一个数组中处理它,并像这个 model.OrderByDescending(x => x.Date_Time);

它会影响对象模型并像这样排序它 model = model.sortedBy(model.Date_Time);

【讨论】:

  • 没有魔法鼠标你没明白我的意思你能举一个例子来得到我的预期结果并使用我的模式
猜你喜欢
  • 2017-11-18
  • 1970-01-01
  • 2013-03-26
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
相关资源
最近更新 更多