包含使用Linq / Lambda的方法

时间:2016-05-22 09:08:53

标签: c# linq lambda

此方法查找不同的日期并添加日期数组。是否可以使用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++;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您需要更改方法的原型,但您可以执行以下操作:

public static IReadOnlyList<DateTime> FindDates(IEnumerable<Letter> L)
{
    return L.Select(l => l.Date).Distinct().ToList();
}

通过阅读结果列表的counter属性,可以轻松检索Count的值。

总的来说,尽可能避免方法中的副作用是一种很好的做法。修改像你一样作为参数传递的数组是一个很好的方法,可以在以后被咬掉。

此外,由于Linq扩展方法是在IEnumerable<T>上定义的,因此我们可以将方法的参数更改为IEnumerable<Letter>。它与您的LinkedList<Letter>完全相同,并且如果以后您决定使用其他集合类型(例如List<Letter>