我得到了一个异常,我想是在它试图执行LINQ查询中的y.Duration <= (int)(DateTime.Now - targetDateTime).TotalMinutes
时发生的。请帮我解决这个错误。
string dateString = "2023-06-04 08:34:46.2743289";
DateTime targetDateTime = DateTime.ParseExact(dateString, "yyyy-MM-dd HH:mm:ss.fffffff", null);
var myUser = _dbContext.Users
.Where(u => u.Telephome== telephone)
.Include(x => x.Activations)
.FirstOrDefaultAsync(u => u.Activations.Any(y =>
y.Code == code &&
y.Duration <= (int)(DateTime.Now - targetDateTime).TotalMinutes));
我最终抛出了以下异常。
LINQ表达式'DbSet().Where(u 0 => EF.Property<int?>(EntityShaperExpression:Xchange.Core.Entities.User ValueBufferExpression:ProjectionBindingExpression:EmptyProjectionMember IsNullable:False,“Id”)!= null && object.Equals(objA:(object)EF.Property<int?>(EntityShaperExpression:Xchange.Core.Entities.User ValueBufferExpression:ProjectionBindingExpression:EmptyProjectionMember IsNullable:False,“Id”),objB:(object)EF.Property<int?>(u 0,“UserId”)))。其中(u 0 => u0.Code == __code_1 && u0.Duration <=(int)(DateTime.Now - u0.TimeStamp).TotalMinutes)'无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList’或“ToListAsync”的调用显式切换到客户端求值。更多https://go.microsoft.com/fwlink/?linkid=2101038信息请访问www.example.com。
1条答案
按热度按时间vjhs03f71#
我见过类似的东西。问题是Linq表达式必须被翻译(例如序列化为SQL),但并非所有内容都有对应项。
然而,在您的情况下,解决方案应该很容易,因为临界表达式可以(方便地)预先计算:
无论如何,在你的代码片段中缺少了一个右括号(在最后)。