Linq GroupBy和Lookup <tkey,telement =“”>。Item </tkey,>

时间:2012-11-05 12:35:34

标签: c# linq entity-framework

我在C#中使用LINQ

此代码会生成dates

类型的Lookup<TKey, TElement>
   var dates = timetableEvents.GroupBy(x => x.DateTimeStart);

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

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

2 个答案:

答案 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);

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