簡體   English   中英

包含使用Linq / Lambda的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM