2011-03-08 43 views
-1

引用外部參數的SelectMany我想我已經得到了這個工作之前,但我沒有看到它:來自內心的選擇

折扣是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。

+0

你是什麼意思'申請'?你想達到什麼目的? – 2011-03-08 20:15:29

+0

通過應用,我的意思是PartType有一個屬性DiscountPercent,我想將其設置爲Dictionary中的值。但是我真正的問題是@Yuriy注意到新的{k,l}或{k,s}。 – 2011-03-08 20:19:56

回答

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 
+0

你對這兩方面都是正確的,但在另一個應用程序中,我有這樣的似乎工作的東西: – 2011-03-08 20:31:18

+0

(糟糕,花了太長時間纔得到該評論編輯) - 這是我之前的額外括號。選擇我沒有看到。 – 2011-03-08 20:40:48

0

l位於Where中的lambda的上下文中。我想你的意思是s => new {k, s}。另外你的括號看起來不對。在第3行,去年括號應該是4行

+0

你是對的,但'k'似乎仍然超出範圍。 – 2011-03-08 20:19:16

+0

@凱利括號改變應該修復。 – 2011-03-08 20:19:51

+0

@凱利:你有一個太多的括號,它仍然在範圍內,但不清楚你首先要做的是什麼。 – 2011-03-08 20:19:52