有一个表(RecordDateTime列):
20.2.2021 12:54:34
20.2.2021 13:54:34
20.2.2021 14:54:34
20.2.2021 15:54:34
20.2.2021 16:54:34
21.2.2021 11:50:00
21.2.2021 13:54:34
21.2.2021 14:54:34
22.2.2021 10:00:00
22.2.2021 13:54:34
22.2.2021 14:54:34
我要去接
20.2.2021 12:54:34
21.2.2021 11:50:00
22.2.2021 10:00:00
并计算平均时间。
这是我当前的代码:
public TimeSpan BeginTime(DateTime startDate, DateTime endDate)
{
var mainGridInfo = from w in db.LogModel
where w.RecordDateTime.Date >= startDate.Date && w.RecordDateTime.Date <= endDate.Date
group w by w.RecordDateTime.Date into test
select test.OrderByDescending(cs => cs.RecordDateTime.TimeOfDay).FirstOrDefault();
var minDatesList = mainGridInfo.Select(s => s.RecordDateTime.TimeOfDay).ToList();
double doubleAverageTicks = minDatesList.Average(timeSpan => timeSpan.Ticks);
long longAverageTicks = Convert.ToInt64(doubleAverageTicks);
return new TimeSpan(longAverageTicks);
}
因此,据我了解,我将按日期分组进行测试,然后按DateTime列的时间部分进行排序,然后采用First或default(以消除可能的异常)。然后我将所有可用值选择到新列表中并计算这些值的平均值?为什么我的代码会产生异常?怎么了?
System.InvalidOperationException:'LINQ表达式'GroupByShaperExpression:KeySelector:rtrim(rtrim(strftime('%Y-%m-%d%H:%M:%f',a.RecordDateTime,'day of day'),' 0'),'。'),ElementSelector:EntityShaperExpression:EntityType:LogModel ValueBufferExpression:ProjectionBindingExpression:EmptyProjectionMember IsNullable:False
.OrderByDescending(cs => cs.RecordDateTime.TimeOfDay)' could not be translated. Either rewrite the query in a form that can be
翻译,或通过插入对“ AsEnumerable”,“ AsAsyncEnumerable”,“ ToList”或“ ToListAsync”的调用来显式切换到客户端评估。有关更多信息,请参见https://go.microsoft.com/fwlink/?linkid=2101038。
尝试以下操作:
DataTable dt = new DataTable();
dt.Columns.Add("Date", typeof(DateTime));
dt.Rows.Add(new object[] {DateTime.ParseExact("20.2.2021 12:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("20.2.2021 13:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("20.2.2021 14:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("20.2.2021 15:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("20.2.2021 16:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("21.2.2021 11:50:00", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("21.2.2021 13:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("21.2.2021 14:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("22.2.2021 10:00:00", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {DateTime.ParseExact("22.2.2021 13:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] { DateTime.ParseExact("22.2.2021 14:54:34", "dd.M.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)});
var days = dt.AsEnumerable().GroupBy(x => x.Field<DateTime>("Date").Date).ToList();
DateTime[] minDate = days.Select(x => x.Min(y => y.Field<DateTime>("Date"))).ToArray();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句