[英]In clause of sql query to linq query
如果有人可以帮助我在Linq中编写以下查询,将不胜感激。
select totaldue
from Receivables
where studentid = 8128
and reportedon = (select max(reportedon)
from Receivables
where studentid = 8128
这就像您要的一样。
var receivables = new List<Receivable>()
{
new Receivable { ReportedOn = DateTime.Now.AddDays(-5), StudentId = 8128, TotalDue = 5.43 },
new Receivable { ReportedOn = DateTime.Now.AddDays(-4), StudentId = 8128, TotalDue = 4.32 },
new Receivable { ReportedOn = DateTime.Now.AddDays(-3), StudentId = 8128, TotalDue = 3.21 },
new Receivable { ReportedOn = DateTime.Now.AddDays(-2), StudentId = 8128, TotalDue = 2.10 },
new Receivable { ReportedOn = DateTime.Now.AddDays(-1), StudentId = 2818, TotalDue = 1.09 },
new Receivable { ReportedOn = DateTime.Now, StudentId = 2818, TotalDue = .98 }
};
var totDue = receivables
.Where(receivable => receivable.StudentId == 8128)
.OrderByDescending(receivable => receivable.ReportedOn)
.Select(receivable => receivable.TotalDue);
Console.WriteLine("{0}", totDue.First());
检查一下:
var max_rep = (from d in Receivables select d.reportedon).Max();
var qry_res = from q in Receivables where q.studentid == 8128 && q.reportedon == max_rep
可能会有帮助
您也可以这样实现
var res = receivables.Where(s => s.StudentId == 8128)
.OrderBy(s => s.TotalDue).FirstOrDefault();
要么
var res = receivables.OrderBy(s=> s.TotalDue)
.FirstOrDefault(s => s.StudentId == 8128);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.