添加 Contains("string") 功能 Azure Table LINQpad 查询?

Add a Contains("string") functionality Azure Table LINQpad query?

好的,由于 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("151207151510") 炸弹。但是,必须有一些方法可以在 LINQpad 中搜索结果,并且 select 仅搜索消息中包含此字符串的结果。

例如,我无法将结果强制转换为一个变量,然后可以使用 LINQ 再次查询该变量。有什么建议吗?

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

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

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

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