如何在Linq中修复“表达式可能不包含动态操作”?

问题描述 投票:0回答:1

我有一个PUT请求,我传入了一个包含ID值和其他变量和值的json字符串值。之后我将deserialize它并从数据库中的json中找到ID,然后更新值:

 var bookininput = JsonConvert.DeserializeObject<dynamic>(value);

 if (bookininput.id == null || bookininput.id == 0)
 {
     return BadRequest("no id provided");
 }
 else { 
     var log = _context.BIBOLogs.Where(input => input.Id == bookininput.id); 
 }

但是,我在.Where(input => input.Id == bookininput.id);遇到问题,因为它告诉我bookininput.id是动态的,不能用于查找。还有其他方法吗?

c# linq entity-framework-core
1个回答
3
投票

在使用过滤器而不是dynamic时尝试使用已知的类/类型。我假设在下面的例子中bookininput.idint

var bookininput = JsonConvert.DeserializeObject<dynamic>(value);
if (bookininput.id == null || bookininput.id == 0)
{
    return BadRequest("no id provided");
}
else 
{
    int inputId = int.Parse(bookininput.id);

    var log = _context.BIBOLogs
        .Where(input => input.Id == inputId);
}
© www.soinside.com 2019 - 2024. All rights reserved.