0

查询具有 e.RowKey.ToLower() 的特定实体会引发异常

CustomerEntity customerEntity = (from e in serviceContext.CreateQuery<CustomerEntity>("Customer")
                                     where e.RowKey.ToLower() == firstName.ToLower()                                         
                                     select e).FirstOrDefault();

基本上我想检查不区分大小写的用户名。Azure 表是由我们的合作伙伴管理的,所以我不能指示他们以小写形式将用户条目输入到表中。

我需要在代码中处理这个。

问候,维维克

4

2 回答 2

3

ToLower() 作为过滤器表达式的一部分无效,因为表存储不支持将其作为操作。

你有两个选择:

  1. 确保您输入的所有数据都是小写的。如果您还需要大写/混合大小写版本,请将其放在另一列中。
  2. 拉回所有数据并在内存中进行过滤。如果您只有少量记录,这是有效的。
于 2012-09-25T13:31:01.860 回答
1

您收到异常,因为该ToLower()方法不是 Azure 中受支持的方法。

我想你可以用这种方式进行比较

where e.RowKey.Equals(username, StringComparison.InvariantCultureIgnoreCase);

它应该完成您想要做的事情,但它使用受支持的Equals()方法。

于 2012-09-25T13:30:41.380 回答