在查询 Azure 存储表时出现异常。
这是我的查询:
tableClient.QueryAsync<Resource>(resource => resource.PartitionKey == projectId.ToString()
&& String.Equals(resource.FullName, fullName, StringComparison.InvariantCultureIgnoreCase));
resource.FullName
和 fullName
都是 string
类型。
但这会引发异常......
Incorrect number of arguments supplied for call to method 'Boolean Equals(System.String, System.String, System.StringComparison)' (Parameter 'method')
同样,如果我添加一个附加条件(在 String.Equals
之前)...
&& !String.IsNullOrWhiteSpace(resource.FullName)
...这会引发异常...
Method IsNullOrWhiteSpace not supported.
如果我将字符串比较更改为...
resource.FullName.ToLower() == fullName.ToLower()
...然后我被告知不支持 ToLower
。
这是怎么回事?为什么我无法对 string
类型的属性调用 String.Equals
或 String.IsNullOrWhiteSpace
?我是否误解了什么,resource.FullName
实际上不是字符串
?
最佳答案
请遵循以下建议并检查是否有帮助。
- 请通过将
String.Equals
更新为 String.Compare 进行检查? - 您可以尝试使用 StringComparison.OrdinalIgnoreCase 的
String.Compare
方法,而不是使用 ToLower() 方法。实现不区分大小写比较的选项:
tableClient.QueryAsync<Resource>(resource =>
resource.PartitionKey == projectId.ToString() &&
String.Compare(resource.FullName, fullName, StringComparison.OrdinalIgnoreCase) == 0);
- 您还可以将
String.IsNullOrEmpty
方法与 String.Trim 一起使用方法:
tableClient.QueryAsync<Resource>(resource =>
resource.PartitionKey == projectId.ToString() &&
!String.IsNullOrEmpty(resource.FullName) &&
!String.IsNullOrEmpty(resource.FullName.Trim()));
希望这有帮助。
关于c# - 无法对 Azure 存储表查询 lambda 内的字符串属性使用基于字符串的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75943744/