【问题标题】:Lambda expression with comparisons of string and datetime using Entity Framework使用实体框架比较字符串和日期时间的 Lambda 表达式
【发布时间】:2015-06-16 14:42:59
【问题描述】:

我必须对同一个 lambda 表达式中的字符串和日期进行比较,但出现以下错误:

  • 委托System.Func<FatturaPA_ERP.Contratto,int,bool> 不接受 1 个参数
  • 无法将 lambda 表达式转换为类型 string,因为它不是委托类型
  • 运算符== 不能应用于stringSystem.Collections.Generic.List<char> 类型的操作数

这是我的代码:

_listContratti = _db.Contrattoes
                    .Where(a => ((a.PIva.ToLower() == PIVA.ToList()) && (a.Data >= _dt)))
                    .OrderBy(c => c.PIva)
                    .ToList();

PIvanvarcharDateDatetime_dtDateTime _dt = new DateTime(2015, 06, 11)

【问题讨论】:

  • a.PIva.ToLower() == PIVA.ToList() 在我看来很奇怪。您正在将小写字符串与某种类型的 List 进行比较?
  • 如果您不使用 quite 这么多方括号,这真的很有帮助 - 例如,Where(a => a.PIva.ToLower() == PIVA.ToList() && a.Data >= _dt) 有什么问题? (我完全同意将字符串与列表进行比较很奇怪,请注意...)

标签: c# entity-framework lambda


【解决方案1】:

您无法将List<T>()string 进行比较,它们是两个不同的data types

先尝试将列表转换为字符串,然后可以比较两个字符串。

`((a.PIva.ToLower() == PIVA.ToList().Aggregate((a,b) => a = String.Concat(a,b));`

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多