Rowkey.ToLower()在Azure表上查询时抛出异常

时间:2012-09-25 13:23:16

标签: azure azure-table-storage

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

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

基本上我想检查不区分大小写的用户名.Azure表由我们的合作伙伴管理,因此我无法指示他们以小写形式输入用户条目到表格。

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

的问候, 的Vivek

2 个答案:

答案 0 :(得分:3)

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

您有两种选择:

  1. 确保您输入的所有数据均为小写。如果您还需要大写/混合大小写版本,请将其放在另一列中。
  2. 撤回所有数据并在内存中执行过滤。如果您只有少量记录,则此选项有效。

答案 1 :(得分:1)

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

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

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

它应该完成您要执行的操作,但它会使用支持的Equals()方法。