我有一组策略,这些策略包含一些摘要,这些摘要包含一个serviceName和可以用逗号分隔的产品的产品类型。我需要查找任何策略摘要serviceNames是否与产品类型中的任何逗号分隔值匹配。例如:
productType.Split(',')
.Select(p => p.Equals(policies.summaries.ForEach( s => { s.serviceName = p})));
和
var name = from s in productType.Split(',')
where s = policies.summaries.ForEach(p=> { p.serviceName == s})
select s;
我知道上面不会编译,但只是想知道是否可以在linq中完成
是的,可以尝试以下方法:
var productTypes = productType.Split(',');
//if you need to get matched policies
var matchedPolicies = policies
.Where(x => x.summaries.Any(y => productTypes.Contains(y.serviceName)));
//if you need to get matched summaries
var matchedSummaries = policies.SelectMany(x => x.summaries)
.Where(x => productTypes.Contains(x.serviceName));
然后,您可以使用matchedPolicies.Any()
或matchedSummaries.Any()
确定任何策略摘要serviceNames是否与产品类型中的任何逗号分隔值匹配。
另外,如果你不关心具体的匹配策略,您可以使用Any
右走policies.Any(x => x.summaries.Any(y => productTypes.Contains(y.serviceName)))
还建议101 LINQ样本以进一步阅读,并提供一些出色的例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句