我有一个包含列id,myname,eventime,ceasetime的数据源。 我需要找出给定Key的重复日期范围。我试着用 -
(from data1 in myDatasource
from data2 in myDatasource
where data1.SeqId != data2.SeqId
&& data1.myname ==data2.myname
where data1.Event_Time <=data2.Cease_Time
&& data1.Cease_Time > data2.Event_Time
select data1).Distinct();
但是这太慢了,我认为每一行都与其余所有行进行比较。 我想要做的是先按myName分组,然后应用where条件。问题是where条件可以返回多行,任何人都可以建议
问候
答案 0 :(得分:2)
var lookup = from data1 in myDataSource
group by myDataSource.myName into g
where g.Count() > 1
select g;
这应该这样做。它将返回按名称分组的对象的查找,其中每个名称都有多个元素。如果您想要将其展平,请选择lookup
并在其上调用SelectMany:
var flatEnumerable = lookup.SelectMany(g=>g); //ToList(), ToArray(), etc will get you a concrete collection