【发布时间】:2016-10-24 17:24:01
【问题描述】:
我有一个客户列表,其中有另一个客户列表,称为系列。我的系列可以是null 或包含数据。
我怎样才能找到任何匹配系列值的项目。我尝试了以下两种方法,但都没有成功。
results = customers.Where(d => d.Series.Any(s => s.Contains("item")));
results = customers.Where(d => d.Series.Count() != 0).Where(s => s.Series.Contains("item"));
谢谢!
【问题讨论】:
-
究竟是什么不起作用?如果
customers.Series为空,您可能会得到一个空引用异常……这是问题所在吗?在旁注中,使用d.Series.Count()在您使用它的上下文中效率低下,因为它将遍历所有系列项目以确定是否有零。出于您的目的,请使用d.Series.Any()这只会检查是否存在一个 - 为您节省许多循环操作。 -
我也想知道具体的问题是什么。如您所见,您得到的答案与您发布的代码中的第一行相同(除了空检查,并且两个答案都不使用 .Contains 在“任何”中)。
-
是否应该将空集包含在输出中?