[英]Find MAX/MIN list item using LINQ?
我有一個具有多個項目和3個道具ID,DATE,COMMENT.ID的列表。ID字段在DATABASE中自動增加。
假設清單包含
2,16AUG,CommentMODIFIED
1,15AUG,CommentFIRST
3,18AUG,CommentLASTModified
我想得到一個具有最小DATE和最新評論的ITEM.Item。 在這種情況下
1,15AUG,CommentLASTModified
任何使用LINQ的簡單方法。
orderedItems = items.OrderBy(x => x.Date);
var result = items.First();
result.Comment = items.Last().Comment;
要從列表中取出一個項目,您可以訂購這些項目,然后選擇第一個項目,如下所示:
var result = items
.OrderByDescending(x => x.Date)
.First();
但是,如果items
集合為空,則First
將引發異常。 這比較安全:
var result = items
.OrderByDescending(x => x.Date)
.FirstOrDefault();
要獲取不同列的最小值/最大值,您可以執行以下操作:
var result =
new Item {
Id = 1,
Date = items.Min(x => x.Date),
Comment = items.Max(x => x.Comment)
};
但這將需要兩次訪問數據庫。 這可能會更有效率:
var result =
(from x in items
group x by 1 into g
select new Item {
Id = 1,
Date = g.Min(g => g.Date),
Comment = g.Max(g => g.Comment)
})
.First();
或使用流利的語法:
var result = items
.GroupBy(x => 1)
.Select(g => new Item {
Id = 1,
Date = g.Min(g => g.Date),
Comment = g.Max(g => g.Comment)
})
.First();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.