使用Linq和lambda表达式查找元素:但不起作用

时间:2014-10-03 09:48:57

标签: c# linq lambda

查看以下示例:

使用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));

1 个答案:

答案 0 :(得分:3)

看起来你想要:

PlacedSelection actualSelection = Model.Coupon.Categories
    .SelectMany(cat => cat.Value.Selections)
    .FirstOrDefault(selection => selection.EventId == Model.EventId);
如果您尝试查找类别,则会使用

Any,但是您试图通过它的外观找到选择