从内部Select中引用外部SelectMany参数

时间:2011-03-08 20:09:21

标签: linq c#-3.0

我以为我之前有过这个工作,但我只是没有看到它:

折扣是Dictionary<PartType, double>。数据是List<PartType>

var d = discounts.Keys.SelectMany(
    k =>
    data.Where( l => l.PartTypeID.Equals( k.PartTypeID ) ) )
    .Select( s => new { k, l } );

错误是,当前上下文中不存在名称“k”(和“l”)。

我最终想要做的是将字典中的double应用于数据中所有匹配的PartType。

2 个答案:

答案 0 :(得分:1)

我怀疑你的意思是:

var d = discounts.Keys.SelectMany(
    k => data.Where(l => l.PartTypeID.Equals(k.PartTypeID)),
    (k, l) => new { k, l });

......但如果没有更多信息,很难说出来。说实话,看起来就像你真的想要一个加入,例如

var d = discounts.Keys.Join(data,
           k => k.PartTypeID, // Key from discounts.Keys
           l => l.PartTypeID, // Key from data
           (k, l) => new { k, l }); // Projection from the two values

答案 1 :(得分:0)

l位于Where中lambda的上下文中。我想你的意思是s => new {k, s}。你的括号似乎也错了。第3行的最后一个括号应该在第4行。