好的,由于 Azure 表查询子集约束,这不起作用:
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 中搜索结果,并在消息中仅选择具有此字符串的结果。
例如,我无法将结果强制转换为变量,然后可以使用 LINQ 再次查询该变量。有什么提示吗?
如果无法对 Azure 表可查询对象使用string.Contains
,仍可将其转换为可枚举,然后应用其他筛选器以仅显示所需的结果。 但是,这意味着它将通过网络返回满足其他条件的所有记录,然后在客户端将它们限制为仅那些 Message 字段包含指定字符串的行。
var res = tcmarketnlog.Where(t => t.Level == level && t.Timestamp >= start && t.Timestamp <= end).AsEnumerable().Where(t => t.Message.Contains("151207151510")).Take(1000);
也许消息为空。只需在包含之前检查消息空即可。请尝试以下操作:
var res = tcmarketnlog.Where(t => t.Level == level
&& t.Message != null && t.Message.Contains("151207151510")
&& t.Timestamp >= start && t.Timestamp <= end).Take(1000);