代碼:
news = (from New myNew in new News()
select myNew).Distinct().ToList();
但這一獨特的是 「物」 有相同的價值觀。我需要在我的列表中每月輸入myNew
。 (一月一月,一月一月,等等)。比,news
將獲得12條記錄。
是否有可能是一種Distinct(myNew.Month)
?
代碼:
news = (from New myNew in new News()
select myNew).Distinct().ToList();
但這一獨特的是 「物」 有相同的價值觀。我需要在我的列表中每月輸入myNew
。 (一月一月,一月一月,等等)。比,news
將獲得12條記錄。
是否有可能是一種Distinct(myNew.Month)
?
你可以按月組和採取的第一個或最後一個或任何(你還沒有告訴我們):
var news = News()
.GroupBy(n => n.Month)
.Select(grp => grp.Last());
編輯:從上Habib的答案我看到你要12個月的評論即使沒有消息。然後,你需要做一個「LINQ的外連接」:
var monthlyNews = from m in Enumerable.Range(1, 12) // left outer join every month
join n in News() on m equals n.Month into m_n
from n in m_n.DefaultIfEmpty()
group n by m into MonthGroups
select new {
Month = MonthGroups.Key,
LastNews = MonthGroups.Last()
};
foreach (var m in monthlyNews)
{
int month = m.Month;
var lastNewsInMonth = m.LastNews;
if (lastNewsInMonth != null) ; // do something...
}
編輯:既然你有問題,實現在你的代碼查詢,你不需要選擇包含也是匿名類型月。您也可以只選擇了新聞本身:
var monthlyNews = from m in Enumerable.Range(1, 12) // every motnh
join n in news on m equals n.Month into m_n
from n in m_n.DefaultIfEmpty()
group n by m into MonthGroups
select MonthGroups.Last();
注意,你現在得到12日消息,但他們中的一些可能是null
當有那個月沒有任何消息。
爲什麼發佈答案後,這已被標記爲重複與完全相同的答案? –
@DannyVarod:因爲1.它不是完全相同的答案(順便說一句,我以前沒有看到答案)2.如果OP會澄清他的要求,兩個問題可能會有更多的不同。 –
@DannyVarod:現在好點了嗎? ;-) –
var result = News()
.GroupBy(p => p.Month)
.Select(g => g.First())
.ToList();
問題是:如果四月不存在任何新的...我怎麼能插入「空」而不是? – markzzz
var vNews = News()
.GroupBy(p => p.Month)
.Select(g => g.First())
.ToList();
溶液1獲取MoreLinq(也可作爲NuGet包,並使用
News().DistinctBy(n => n.Property)
短手溶液
var vNews = News()
.GroupBy(p => p.Month, (key, p) => p.FirstOrDefault())
.ToList();
如果你有多個記錄一個月,你想如何決定採取哪一個?第一個也許? – Jamiec
'News'是'New'元素的集合嗎? – Steven
@Danny沒有超過Distinct需要一個lambda –