Check this:
DataTable one = new DataTable();
one.Columns.Add(new DataColumn("Column0", Type.GetType("System.DateTime")));
one.Columns.Add(new DataColumn("Column1", Type.GetType("System.String")));
one.Columns.Add(new DataColumn("Column2", Type.GetType("System.String")));
one.Rows.Add(new Object[]{new DateTime(2015, 5, 4, 0, 10, 0), "xyz", "ON"});
one.Rows.Add(new Object[]{new DateTime(2015, 5, 4, 0, 20, 0), "xyz", "OFF"});
one.Rows.Add(new Object[]{new DateTime(2015, 5, 4, 0, 30, 0), "abc", "ON"});
one.Rows.Add(new Object[]{new DateTime(2015, 5, 4, 0, 40, 0), "abc", "OFF"});
var qry = one.AsEnumerable()
.GroupBy(r=>new{DDate = r.Field<DateTime>("Column0").ToString(@"yyyy/MM/dd"), Id=r.Field<string>("Column1")})
.Select((g, i)=>new
{
Id = g.Key.Id,
SrNo = i+=1,
DDate = g.Key.DDate,
OnTime = g.Min(c=>c.Field<DateTime>("Column0")).ToString(@"HH:mm:ss"),
OfTime = g.Max(c=>c.Field<DateTime>("Column0")).ToString(@"HH:mm:ss"),
RunningTime = (g.Max(c=>c.Field<DateTime>("Column0")) - g.Min(c=>c.Field<DateTime>("Column0"))).TotalMinutes
});
Result:
Id SrNo DDate OnTime OfTime RunningTime
xyz 1 2015-05-04 00:10:00 00:20:00 10
abc 2 2015-05-04 00:30:00 00:40:00 10