LINQ 两个 Where 子句

Mar*_*ein 3 c# linq

有人知道我如何链接我的 where 子句吗?

我想通过在第二个结果中找到的项目过滤我的主列表中的项目。

我有以下示例代码

@foreach (var artikel in Controller.Artikel
    .Where(x => x.LieferantenArtikel
                .Where(y => y.Lieferant.LieferantId == bestellung.LieferantId)
)
{
    <option value="@artikel.Artikelnummer">@artikel.Artikelnummer</option>
}
Run Code Online (Sandbox Code Playgroud)

第一个.Where只是访问我的对象列表,它具有我需要的真正检查。

Laj*_*pad 5

你链接的方式.Where()进入.Where()是技术上是正确的。问题是.Where()当前情况下的外部不会评估为布尔值。然而,这是一个要求。a 的目的.Where()是为一个集合定义一个过滤器,该过滤器产生该集合的一个子集。您可以检查.Any()项目是否满足该条件:

@foreach (var artikel in Controller.Artikel
    .Where(x => x.LieferantenArtikel
                .Any(y => y.Lieferant.LieferantId == bestellung.LieferantId))
)
{
    <option value="@artikel.Artikelnummer">@artikel.Artikelnummer</option>
}
Run Code Online (Sandbox Code Playgroud)

.