使用Foreach的Linq查询

amun1000

我有一组策略,这些策略包含一些摘要,这些摘要包含一个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中完成

弗拉基米尔(Vladimir)

是的,可以尝试以下方法:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章