[英]Use Linq to return first result for each category
我有一個具有3個屬性的類(ApplicationHistory):
ApplicantId,ProviderId,ApplicationDate
我將數據庫中的數據返回到列表中,但是其中包含重復的ApplicantId / ProviderId鍵。
我要禁止該列表,以便該列表僅包含每個ApplicantId / ProviderId的最早的應用程序日期。
下面的示例是我目前所在的位置,但是我不確定如何確保最早的日期返回。
var supressed = history
.GroupBy(x => new
{
ApplicantId = x.ApplicantId,
ProviderId = x.ProviderId
})
.First();
所有建議表示贊賞。
回想一下,由GroupBy
調用形成的每個組都是一個IGrouping<ApplicationHistory>
,它實現了IEnumerable<ApplicationHistory>
。 在此處閱讀有關IGrouping
更多信息。 您可以訂購這些並選擇第一個:
var oldestPerGroup = history
.GroupBy(x => new
{
ApplicantId = x.ApplicantId,
ProviderId = x.ProviderId
})
.Select(g => g.OrderBy(x => x.ApplicationDate).FirstOrDefault());
您正在選擇第一組。 而是從每個組中選擇第一項:
var supressed = history
.GroupBy(x => new {
ApplicantId = x.ApplicantId,
ProviderId = x.ProviderId
})
.Select(g => g.OrderBy(x => x.ApplicationDate).First());
或查詢語法(在這種情況下,您無需為匿名對象屬性指定名稱):
var supressed = from h in history
group h by new {
h.ApplicantId,
h.ProviderId
} into g
select g.OrderBy(x => x.ApplicationDate).First();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.