[c#]Linq 查询与 Foreach

标签: Linq C#
发布时间: 2017/2/28 23:18:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个集合包含的摘要,其中包含 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 中

解决方法 1:

是的它是可能,像这样尝试︰

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 示例为额外的阅读与一些很好的例子。

官方微信
官方QQ群
31647020