【发布时间】:2018-06-28 19:13:19
【问题描述】:
我正在为 Fluent LINQ 查询而苦苦挣扎。我有一个带有Product 数组的Contributor 对象:
public class Product
{
public int Id {get;set;}
public string Role {get;set;}
public string Publisher {get;set;}
}
public class Contributor
{
public string Id {get;set;}
public string Name {get;set;}
public Product[] ProductsContributedTo {get;set;}
}
我有一个 Contributor 的集合,我想过滤这些集合,以便:
我只选择
Contributor记录,其中作者角色记录存在于Contributor.ProductsContributedTo数组中。每个贡献者
Contributor.ProductsContributedTo数组应仅包含作者角色。
这是我目前的尝试:
var authors = contributors.SelectMany(people => people.ProductsContributedTo
.Where(product => product.Role == "Author")
.Select(c => people))
.ToList();
因此,我正在选择正确的贡献者记录,但如何过滤 Contributor.ProductsContributedTo 以仅包含作者角色?
这是一个小提琴,证明我有 3 个贡献者记录 Barry Collins、Maggie Fenwick 和 Sedgewick Foley。上面的 LINQ 查询只正确选择了 Maggie Fenwick 和 Barry Collins,但是如何过滤 Contributor.ProductsContributedTo 数组以便我只有他们各自的 Author Product 记录?
https://dotnetfiddle.net/hScdi4
编辑:
我对 Fiddle 做了一点改动,因为每个 Contributor 都可以创作多个 Product,所以我想说明一下。
【问题讨论】: