添加 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);
好的,由于 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);