查找具有Linq和lambda表达式的元素:但没有';不起作用

本文关键字:不起作用 Linq lambda 查找 表达式 元素 | 更新日期: 2023-09-27 18:25:29

看看下面的例子:

第一个解决方案,使用foreach,工作得非常好而且很容易。但是我试着用Linq来写,但我没能达到这个结果。我做了一些尝试,但没有人成功。

我希望只找到一个元素。

问题不在运行时:我不太了解Linq-sintax,所以我不知道如何获得名为PlacedSelection的元素(foreach结构澄清了我在哪里寻找它)。相反,在我的尝试中,我可以获得PlacedCategory元素。。但我不需要这个。。

PlacedSelection ActualSelection = null;
foreach (var placedCategory in Model.Coupon.Categories)
{
    foreach (PlacedSelection placedSelection in placedCategory.Value.Selections)
    {
        var pp = placedSelection.EventId;
        if (pp == Model.EventId)
        {
            ActualSelection = placedSelection;
            break;
        }
    }
}
//IEnumerable<KeyValuePair<string, PlacedCategory>> p = Model.Coupon.Categories(c => c.Value.Selections.Any(s=> s.EventId == Model.EventId));

查找具有Linq和lambda表达式的元素:但没有';不起作用

看起来你想要:

PlacedSelection actualSelection = Model.Coupon.Categories
    .SelectMany(cat => cat.Value.Selections)
    .FirstOrDefault(selection => selection.EventId == Model.EventId);

如果您试图查找类别,但您试图通过其外观查找selection时,则会使用Any