我正在开发一个处理抄表的系统。
我想生成一个输出,其中系统显示属于客户的所有仪表以及每个仪表的最后三个读数。
到目前为止,我必须遵循以下代码:
var lastMeterReading = from meeters in metermodel.Meeters
join reading in metermodel.Readings on meeters.MeterNumber equals reading.MeterNumber
where (maalers.CustNo == 6085574)
orderby reading.Date descending
group meeters by new { meeters.MeterNumber, reading.Consumption, reading.Date } into result
select new
{
Consumption = result.Key.Consumption, No = result.Key.MeterNumber, Date = result.Key.Date
};
现在,它显示属于客户的所有仪表。如果我放一个 .take(3),它只会显示前 3 个结果。
谢谢! 丹尼尔
最佳答案
我认为您需要的是将 .Take(3) 放在正确的位置。 在你的情况下,你可能做了 result.Take(3) 但这意味着取前三组(及其所有元素)。
下面是试图说明我的意思,但是,我想你需要在最后一部分修复它,因为我没有数据来测试它,因此我不确定是什么我正在尝试访问此时可以访问。但我希望你明白我的意思。
var lastMeterReading = (from meeters in metermodel.Meeters
join reading in metermodel.Readings on meeters.MeterNumber equals reading.MeterNumber
where (maalers.CustNo == 6085574)
orderby reading.Date descending
group meeters by new { meeters.MeterNumber, reading.Consumption, reading.Date } into result
from m in result
select new {Key = m.Key, Info = result.OrderByDescending(r => r.Date).Take(3)})
.Select(r => new
{ Consumption = r.Consumption, No = r.MeterNumber, Date = r.Date });
关于c# - 显示组中每个元素的 3 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760833/