linq不区分大小写和修整比较

时间:2019-05-14 10:27:38

标签: c# 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

不正确吗?

我如何进行这项工作?

1 个答案:

答案 0 :(得分:2)

Trim()仅在字符串的开头和结尾(前导和结尾)处修剪空白。请参阅docs

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

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

其中 str 是字符串。

也可以考虑使用诸如*str*.Equals(*str2*, StringComparison.OrdinalIgnoreCase)之类的比较方法,而不要依赖ToUpper()。阅读How to compare strings in C#,它详细说明了字符串比较。