添加一个包含("字符串")功能的Azure Table LINQpad查询?

时间:2016-02-25 08:57:21

标签: linq linqpad

好的,由于Azure Table查询子集限制,这不起作用:

var res = tcmarketnlog.Where(t => t.Level == level && t.Message.Contains("151207151510") && t.Timestamp >= start && t.Timestamp <= end).Take(1000);

t.Message.Contains(&#34; 151207151510&#34;)炸弹。但是,必须有一些方法然后在LINQpad中搜索结果,并在消息中仅选择带有此字符串的结果。

例如,我无法将结果强制转换为随后使用LINQ再次查询的变量。有什么提示吗?

2 个答案:

答案 0 :(得分:2)

如果您无法在Azure Table Queryable上使用string.Contains,您仍然可以将其转换为Enumerable,然后应用其他过滤器以仅显示所需的结果。但是,这意味着它将返回通过网络满足其他条件的所有记录,然后将它们在客户端限制为仅包含Message字段包含指定字符串的那些行。

var res = tcmarketnlog.Where(t => t.Level == level && t.Timestamp >= start && t.Timestamp <= end).AsEnumerable().Where(t => t.Message.Contains("151207151510")).Take(1000);

答案 1 :(得分:0)

也许消息为空。只需在包含之前检查消息null。请试试这个:

        var res = tcmarketnlog.Where(t => t.Level == level 
                                     && t.Message != null && t.Message.Contains("151207151510") 
                                     && t.Timestamp >= start && t.Timestamp <= end).Take(1000);