我有一个叫nrt_bal_sheet的桌子
date |company_name|amount_db|amount_cr|balance| nrt_acc
11/12/2021 MoneyGram 5000 0 5000 0046D
11/12/2021 MoneyGram 0 2000 7000 0046D
11/12/2021 MoneyGram 0 20000 20000 0046D
12/9/2021 Ria Money 0 15000 15000 0039D
12/11/2021 MoneyGram 10000 857300 857300 0046T
12/11/2021 MoneyGram 1000 85730 914318.61 0046T
12/12/2021 MoneyGram 1000 85730 1000048.61 0046T我想和amount_db和amount_cr以及按日期计算的平衡组,nrt_acc,company_name,以及那些只有最后一个字母"T“的nrt_acc。
我需要以下结果
date |company_name | amount_db |amount_cr | balance | nrt_acc
12/11/2021 MoneyGram 11000 943030 932030.00 0046T
12/12/2021 MoneyGram 1000 85730 1016760.00 0046T这是我已经做过的代码。
nrtBalanceSheet = (
from n in db.nrt_bal_sheet
group n by new { n.date, n.nrt_acc, n.company_name } into g
orderby g.date
select new ValuePassModel
{
advice_issue_date = g.Key.date,
company_name = g.key.company_name,
company_code = g.key.nrt_acc,
debit = g.Sum(n => n.amount_db),
credit = g.Sum(n => n.amount_cr),
nrt_bal_sheet = g.Sum(n => n.balance)
}
).ToList();但我犯了个错误。
Error CS1061 'IGrouping<,nrt_bal_sheet>‘不包含“date”的定义,也没有扩展方法'date’,可以找到接受'IGrouping<,nrt_bal_sheet>‘的第一个参数(您是缺少一个使用指令还是程序集引用?)
请帮我纠正我的linq查询兄弟。
发布于 2021-12-15 16:53:22
正如有人已经指出的那样,Linq提供程序在这个讨论中非常重要。也就是说,我用Linq尝试了这个对象,它工作得很好,从我的LinqPad输出屏幕截图中可以看到。一个选项是获取数据,然后执行一个.ToList(),它将在内存中加载您的数据,然后继续执行其余的Linq查询,以便它作为Linq执行到Object。不好的方面是,它将从内存中的数据存储中提取所有数据。

https://stackoverflow.com/questions/70350172
复制相似问题