【问题标题】:String compare in C# with LINQ Expression [closed]C#中的字符串比较与LINQ表达式[关闭]
【发布时间】:2021-09-29 03:02:01
【问题描述】:

我正在尝试解决 c# 中字符串比较的问题,但不幸的是,它不起作用

Expression<Func<Physician, bool>> PredicateLicense = x => x.LicenseNumber == LicenseNumber;

这就是我所做的

Expression<Func<Physician, bool>> PredicateLicense = string.Compare(x => x.LicenseNumber,LicenseNumber,true);

但是上面的行抛出了一个异常。我该怎么做?

【问题讨论】:

  • "但上面的行抛出异常" - 什么异常?看起来它不应该编译,这有点不同......那么你得到的第一行呢?
  • (鉴于 C# 2.0 甚至不支持 lambda 表达式,很难看出这如何可能相关。如果您不是在询问特定于个别 C# 版本,请不要使用版本化标签 - 只需 c# 就可以了。目前您的问题中也没有关于 ASP.NET MVC 的内容,所以我质疑该标签有多有用......)

标签: c# asp.net-mvc c#-4.0 c#-3.0 c#-2.0


【解决方案1】:

我想你的意思是代码没有编译也没有抛出异常?

您没有指定为什么要使用string.Compare,但我假设您在比较许可证号时要忽略大小写。

如果是这种情况,我建议您:

Expression<Func<Physician, bool>> predicateLicense = 
    p => p.LicenseNumber.Equals(licenseNumber, StringComparison.OrdinalIgnoreCase);

关于Compare 方法,请注意它返回int 而不是bool,所以你可以这样做:

Expression<Func<Physician, int>> predicateLicense =
    p => string.Compare(p.LicenseNumber, licenseNumber, true);

关于 Compare 方法及其返回值含义的更多信息,您可以阅读here

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多