【问题标题】:Like statement equivalent in Windows Azure tableWindows Azure 表中的 Like 语句等效项
【发布时间】:2014-03-04 15:40:46
【问题描述】:

我想知道天蓝色表存储中是否有类似的语句。我使用此语句来获取特定数据:

myTable.Where(userinfo => userinfo.Username == txtUsername.Text.ToLower());

有没有办法让它变成这样:

select * from tblUsers where username like 'D%'

【问题讨论】:

    标签: c# xaml azure microsoft-metro


    【解决方案1】:
    myTable.Where(userinfo => userinfo.Username.StartsWith("D");
    

    【讨论】:

    • 我对这个陈述有疑问,如果文本是“Deb”怎么办?它还会搜索包含“Deb”的用户名吗?
    • 它将搜索以“Deb”开头的。如果你想要 "%Deb%" 然后把它改成.Contains
    【解决方案2】:

    虽然不推荐,但您可以进行范围查询。所以你的代码会是这样的:

    myTable.Where(userinfo => (userinfo.Username >= 'D' && userinfo.Username < 'E'));//Not tested code
    

    上面的语句将返回所有用户名以字母D 开头的用户。但是,您需要记住两件事:

    1. 这将导致全表扫描。如果表中的记录数量很少,这可能不是一个大问题,但如果您的表很大,这将是一个问题。
    2. 由于此查询正在进行全表扫描,因此请准备好获取延续令牌,即查询不会返回任何结果,但会为您提供一个延续令牌,您需要使用该令牌将下一个请求发送到表服务。您可能会发现此链接有助于理解延续令牌:http://msdn.microsoft.com/en-us/library/windowsazure/dd135718.aspx

    【讨论】:

    【解决方案3】:

    Azure Table 原生只支持少数操作符:

    Equal               eq
    GreaterThan         gt
    GreaterThanOrEqual  ge
    LessThan            lt
    LessThanOrEqual     le
    NotEqual            ne
    

    http://msdn.microsoft.com/en-us/library/windowsazure/dd894031.aspx

    【讨论】:

    • 你能给我举个例子说明我将如何使用它吗?
    猜你喜欢
    • 2011-01-27
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多