我有以下查询从列表中提取项目。
latestDoc = openDocs.Where(d => d.docBatchId == HARD_CODED_ID).FirstOrDefault();
我想找到带有latestStatusDate的行...我正在使用MAX函数但它返回null,因为我相信Max正在寻找所有文档的最大值,我只是希望它找到包含此batchId的文档的最大值
latestDoc = openDocs.Where(d => d.docBatchId == HARD_CODED_ID && d.prodStatus == openDocs.Max(d => d.ProdStatus)).FirstOrDefault();
有什么想法吗?
钽, 瑜珈
答案 0 :(得分:1)
您可以使用OrderByDescending
:
latestDoc = openDocs.Where(d => d.docBatchId == HARD_CODED_ID)
.OrderByDescending(d => d.StatusDate)
.FirstOrDefault();
答案 1 :(得分:0)
我相信这样的事情会让你得到你想要的东西
var latestDoc = openDocs.Where(d => d.docBatchId == HARD_CODED_ID)
.OrderByDescending(d => d.ProdStatus)
.FirstOrDefault();
答案 2 :(得分:0)
以下c#编译并在LinqPad ...
中运行 var openDocs = new [] {
new {
docBatchId = 123,
StatusDate = new DateTime(2014, 01, 01)
},
new {
docBatchId = 123,
StatusDate = new DateTime(2014, 01, 02)
},
new {
docBatchId = 123,
StatusDate = new DateTime(2014, 01, 03)
}
,
new {
docBatchId = 456,
StatusDate = new DateTime(2014, 01, 04)
}
};
var HARD_CODED_ID = 123;
var latestDoc = (from doc in openDocs
where doc.docBatchId == HARD_CODED_ID
select doc.StatusDate).Max();
latestDoc.Dump();
结果是03/01/2014 00:00:00(2014年1月3日),这是docBatchId为123的3个项目的最新statusDate。