好的,由于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再次查询的变量。有什么提示吗?
答案 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);