我正在使用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
不正确吗?
我如何进行这项工作?
答案 0 :(得分:2)
Trim()
仅在字符串的开头和结尾(前导和结尾)处修剪空白。请参阅docs
要删除字符串中的空格,您可以使用:
*str*.Replace(" ", "");
Regex.Replace(*str*, @"\s", "")
其中 str 是字符串。
也可以考虑使用诸如*str*.Equals(*str2*, StringComparison.OrdinalIgnoreCase)
之类的比较方法,而不要依赖ToUpper()
。阅读How to compare strings in C#,它详细说明了字符串比较。