[英]Contains method using Linq/Lambda
此方法查找不同的日期並將其添加到dates數組。 是否可以使用linq / lambda進行此方法?
public static void FindDates(DateTime[] dates, LinkedList<Letter> L, out int counter)
{
counter = 0;
foreach (var let in L)
{
if (!dates.Contains(let.Date))
{
dates[counter] = let.Date;
counter++;
}
}
}
您需要更改方法的原型,但是您可以執行以下操作:
public static IReadOnlyList<DateTime> FindDates(IEnumerable<Letter> L)
{
return L.Select(l => l.Date).Distinct().ToList();
}
通過讀取結果列表的Count
屬性,可以輕松獲取counter
的值。
總體而言,這是一個很好的做法,即盡可能避免方法的副作用。 像您一樣修改作為參數傳遞的數組是以后被咬的好方法。
另外,由於Linq擴展方法是在IEnumerable<T>
上定義的,因此我們可以將方法的參數更改為IEnumerable<Letter>
。 它與LinkedList<Letter>
完全相同,其附加好處是,如果以后您決定使用其他集合類型(如List<Letter>
),它將不會中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.