简体   繁体   English

如何在OrderBy中使用Linq查询结果?

[英]How to use Linq query Result in OrderBy?

Here i had scenario to get the data in date wise of this month(Present month) 在这里,我有一个场景来获取本月(当前月份)的日期数据

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

Schema 架构

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))

Here I used union to get the datetime column data in one column 在这里,我使用联合来在一列中获取datetime列数据

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

How can i use this unionDateColumn data for orderby and to get expected output? 我如何使用这个unionDateColumn数据进行订购并获得预期的输出?

Below is query for sum of amount but here my issue is how to 下面是查询金额的总和,但是这里我的问题是如何

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
                          });

我假设您想按date_time排序结果

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

Why FirstOrDefault ? 为什么选择FirstOrDefault? i asume you want every row. 我想你想要每一行。

Sajeetharan's example: var result = unoinDateColumn.OrderBy(t=>t.Date_Time).ToList(); Sajeetharan的示例:var result = unoinDateColumn.OrderBy(t => t.Date_Time).ToList(); result is the same as "select * from unionDateColumn order by DateTime" 结果与“按DateTime从unionDateColumn顺序选择*”相同

Your example: model.ToList().OrderByDescending(unoinDateColumn).FirstOrDefault(); 您的示例:model.ToList()。OrderByDescending(unoinDateColumn).FirstOrDefault();

is the same as "Select * from model orderby unionDateColumn" May i ask why you are handling each column seperately? 与“ selection from model orderby unionDateColumn”相同吗?我可以问一下为什么要分别处理每个列吗? insted of in one large array ? 装在一个大阵列中?

Handle it in one array, and do like this model.OrderByDescending(x => x.Date_Time); 将其处理在一个数组中,并像此模型一样处理。OrderByDescending(x => x.Date_Time);

it will affect the object model and order it like this model = model.sortedBy(model.Date_Time); 它将影响对象模型并对其进行排序,如下所示:model = model.sortedBy(model.Date_Time);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM