首页 > 解决方案 > linq 不区分大小写和修剪比较

问题描述

我正在使用linq查询表。

我的查询过滤器需要比较一些字符串值 - 这种比较不区分大小写并修剪了空格,不仅在我的字符串的开头和结尾,而且在中间,例如。“重庆”“四川”。我试图解决这个问题,但我发现它不起作用。

string fromLocation = this.uiFromLocation.Text;
string toLocation = this.uiToLocation.Text;
fromLocation = fromLocation.Trim().ToUpper();
toLocation = toLocation.Trim().ToUpper();

 var results = from myRow in sectionsDetails.Tables[0].AsEnumerable()
                              where myRow.Field<string>("LocationFrom").Trim().ToUpper() == fromLocation &&
                              myRow.Field<string>("LocationTo").Trim().ToUpper() == toLocation &&
                              myRow.Field<int>("VehicleType") == vehicleType
                              orderby myRow.Field<DateTime>("ModifiedDate") descending
                              select myRow;

我猜

myRow.Field<string>("LocationFrom").Trim().ToUpper() == fromLocation

是不正确的?

我该如何进行这项工作?

标签: c#linq

解决方案


Trim()仅修剪字符串开头和结尾(前导和尾随)的空格...参见文档

要删除字符串中的空格,您可以使用:

  • *str*.Replace(" ", "");
  • Regex.Replace(*str*, @"\s", "")

其中str是字符串。

还可以考虑使用比较方法,例如*str*.Equals(*str2*, StringComparison.OrdinalIgnoreCase)而不是依靠ToUpper(). 阅读如何在 C# 中比较字符串,它详细解释了字符串比较。


推荐阅读