【问题标题】:Error in expression [duplicate]表达式错误[重复]
【发布时间】:2018-09-01 00:20:07
【问题描述】:

谁能帮我解决以下错误?

LINQ to Entities 无法识别方法 'Int32 Int32(System.String)' 方法,该方法不能翻译 到商店表达式中。

以下是我的代码,我正在尝试多种方法来修复此错误,但我没有成功:

public IEnumerable<Dia1> GetPendenciasByUser(int centroId)
{
    var query = Db.Dia1S
        .Join(Db.Cadastros, dia1 => dia1.PatientId, cad => cad.PatientId, (dia1, cad) => new { dia1, cad })
        .Join(Db.Randomizacao, dia1 => dia1.dia1.PatientId, rand => rand.PatientId, (dia1, rand) => new { dia1, rand })
        .Where(s => s.dia1.dia1.dtd1 == null ? (Convert.ToInt32(DateTime.Now - s.rand.RandomizacaoData)) > 1 : (Convert.ToInt32(Convert.ToDateTime(s.dia1.dia1.dtd1) - s.rand.RandomizacaoData)) > 1 )
        .Select(s => s.dia1.dia1)
        .ToList();
    return query;
}

【问题讨论】:

  • @4castle 对不起,我已经翻译成英文了。
  • Convert.ToInt32 无法转换为 SQL。
  • 不是复制贵的朋友
  • 这在什么方面不是重复的?不要简单地断言它不是,给出一个理由或用额外的信息编辑你的问题来区分它。它在我看来确实是重复的。
  • 您的错误表明 int32.ToInt32(在您的情况下精确:Convert.ToInt32,归结为相同)在 LinqToEntities 中不受支持。这正是链接(可能)重复中提到的内容

标签: c# asp.net-mvc linq-to-entities


【解决方案1】:

错误信息很清楚,LINQ 不知道如何将Convert.ToInt32() 函数转换为 SQL。您可以像这样使用直接转换:

(int)(DateTime.Now - s.rand.RandomizacaoData)

或者您必须执行查询并获取数据,然后根据需要使用Convert.ToInt32() 在内存中转换它。

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2011-04-10
    • 2013-01-24
    • 2018-08-27
    相关资源
    最近更新 更多