3

我在 C# 中使用 LINQ

此代码导致dates类型Lookup<TKey, TElement>

   var dates = timetableEvents.GroupBy(x => x.DateTimeStart);

我只需要一个 DateTimeStart 列表(DateTime 类型)。

我应该如何更改我的 LINQ 表达式?

4

2 回答 2

7

只需使用Select

var dates = timetableEvents.Select(x => x.DateTimeStart);

或者,如果您只想要每个组中的一个:

var dates = timetableEvents.GroupBy(x => x.DateTimeStart).Select(x => x.Key);

如果您希望它运行得更快一点,那么您可以使用 Distinct (如 Rawling 的回答),但您可能不会注意到太大的区别,除非您有很多对象(尽管意图更清晰):

var dates = timetableEvents.Select(x => x.DateTimeStart).Distinct();

我发现这个网站在尝试学习 LINQ 时非常有用:101 LINQ Samples

于 2012-11-05T12:36:52.917 回答
2

如果您只需要开始日期/时间,

var dates = timetableEvents.Select(x => x.DateTimeStart).Distinct();

可能比

var dates = timetableEvents.GroupBy(x => x.DateTimeStart).Select(x => x.Key);

因为它知道它不必费心将事件分组在一起。

于 2012-11-05T13:09:14.243 回答