Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq将按降序检索名称而不是id和列表_C#_Entity Framework_Linq - Fatal编程技术网

C# linq将按降序检索名称而不是id和列表

C# linq将按降序检索名称而不是id和列表,c#,entity-framework,linq,C#,Entity Framework,Linq,你能帮我解决这个问题吗。 我正在找回每个人头的平衡,我找回了每个人头的平衡。现在我想按降序列出余额,并列出名称而不是h_id。我使用了代码 protected void account_watchlist() { using(var context = new sem_dbEntities()) { //ledger && head var year = DateTime.Now.AddMinutes(318).Year; var month = Da

你能帮我解决这个问题吗。 我正在找回每个人头的平衡,我找回了每个人头的平衡。现在我想按降序列出余额,并列出名称而不是h_id。我使用了代码

protected void account_watchlist() {
  using(var context = new sem_dbEntities()) {
    //ledger && head
    var year = DateTime.Now.AddMinutes(318).Year;
    var month = DateTime.Now.AddMinutes(318).Month;
    var start = new DateTime();
    if (month >= 4) {
      start = new DateTime(year, 04, 01);
    } else if (month < 4) {
      start = new DateTime(year - 1, 04, 01);
    }
    var qr = (from a in context.ledgers
              where a.entry_date >= start && a.entry_date < new DateTime(year, month, 1) 
              join b in context.heads on a.h_id equals b.h_id
              group a by a.h_id into sb select new {
        sb.FirstOrDefault().h_id,
          totalc = sb.Sum(c => c.credit),
          totald = sb.Sum(d => d.debit),
          balance = sb.Sum(d => d.debit) - sb.Sum(c => c.credit)
      }).ToList();
    Repeater2.DataSource = qr.ToList();
    Repeater2.DataBind();
  }
}
受保护的无效帐户\u观察列表(){
使用(var context=new sem_dbEntities()){
//分类账和总帐
var year=DateTime.Now.AddMinutes(318.year);
var month=DateTime.Now.AddMinutes(318.month);
var start=new DateTime();
如果(月份>=4){
开始=新日期时间(年,04,01);
}否则,如果(月<4){
开始=新日期时间(年份-1,04,01);
}
var qr=(来自context.ledgers中的
其中a.entry\u date>=开始和&a.entry\u date<新日期时间(年、月、1)
在context.heads中加入b.h_id等于b.h_id
a组按a.h_id进入sb选择新{
sb.FirstOrDefault().h_id,
总计c=总额(c=>c.信用),
总计d=总额(d=>d.借方),
余额=总额(d=>d.借方)-总额(c=>c.贷方)
}).ToList();
Repeater2.DataSource=qr.ToList();
Repeater2.DataBind();
}
}
您需要使用带有分类账的表头。它将允许您访问总帐实体和所有相关分类账(在总帐集合中):

context.heads中h的

在context.ledgers.Where(x=>x.entry\u date>=startDate&&x.entry\u datel.credit),
设totald=headedgers.Sum(l=>l.debit),
选择新的{
h、 h_id,
h、 名字,
totalc,
总计,
余额=总计D-总计C,
}

我还为贷记总额和贷记总额引入了两个范围变量(此处考虑更好的名称),以避免第二次计算余额。

谢谢,先生,您能帮我以降序显示余额吗order@RenjithStephen最简单的选项是
qr.OrderByDescending(x=>x.balance).ToList()
from h in context.heads
join l in context.ledgers.Where(x => x.entry_date >= startDate && x.entry_date < endDate)
   on h.h_id equals l.h_id into headLedgers
where headLedgers.Any()
let totalc = headLedgers.Sum(l => l.credit),
let totald = headLedgers.Sum(l => l.debit),  
select new {
   h.h_id,
   h.name,
   totalc,
   totald,
   balance = totald - totalc,
}