此代碼搜索一起發生的事件組。 它們之間最多5秒。組間超過5秒鐘。LINQ:按時間分組的事件
更新:組是日期時間列表。一個組包含少於5秒的DateTime。發生超過5秒的日期時間放置到下一組。
public static List<List<DateTime>> GetGroups(int count)
{
var groups = new List<List<DateTime>>();
groups.Add(new List<DateTime>());
using (var db = new DbContainer())
{
foreach (var row in db.Table)
{
if (!groups.Last().Any() || (groups.Last().Any() && (row.Time - groups.Last().Last()).TotalSeconds <= 5))
{
groups.Last().Add(row.Time);
}
else if (groups.Count < count)
{
groups.Add(new List<DateTime>());
groups.Last().Add(row.Time);
continue;
}
if (groups.Count == count)
{
break;
}
}
}
return groups;
}
我可以在LINQ中的一個或兩個表達式中實現相同的算法嗎?
看起來像代碼不會編譯。 – ChaosPandion
@ M.Babcock - 'groups.Add(new List());' –
ChaosPandion
@ChaosPandion - 是的,我修正了 – scazy