我在C#中使用LINQ
此代码会生成dates
Lookup<TKey, TElement>
var dates = timetableEvents.GroupBy(x => x.DateTimeStart);
我只需要一个DateTimeStart列表(类型为DateTime)。
我应该如何更改LINQ表达式?
答案 0 :(得分: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时发现this site非常有用:101 LINQ Samples
答案 1 :(得分:2)
如果您只需要开始日期/时间,
var dates = timetableEvents.Select(x => x.DateTimeStart).Distinct();
可能比
更有效率var dates = timetableEvents.GroupBy(x => x.DateTimeStart).Select(x => x.Key);
因为它知道它不必费心地将事件分组在一起。