2010-08-17 88 views
1

動態添加選擇字段比方說,我們有一個表達:使用LINQ拉姆達

var prices = from p in PriceDB.Prices 
      where p.TypeID == 12 
      orderby p.PriceType.Title 
      select p; 

是否有可能修改選擇列表?

我想象它看起來像這樣:

var newPriceList = prices.Select(p => p.ExchangeRate); 

這可能是一個奇怪的要求,但在我的代碼(這也太漫長而複雜,張貼在這裏),我希望有條件字段添加到輸出取決於CheckBoxList。

我認爲,當然,我試圖去了解這個錯誤的方式...

+0

感謝您提供的所有幫助和鏈接。我已經決定重寫我的代碼,以取出兩組結果,按原樣進行預過濾,然後將它們結合到內存中。爲了更清楚地瞭解我在做什麼:我有一個表返回許多結果,另外兩個表分別提供一個值列表和一個值類型列表。我想只返回一個結果集,只有用戶選擇的值類型的值。基本上我認爲我試圖讓LINQ生成一個數據透視表,但嘿... – 2010-08-17 10:59:12

回答

0

雖然你可能走下去的動態路線,我會強烈考慮不這樣做。在特定情況下,如果您不需要額外價值,那麼獲取額外價值的成本是多少?他們是動態顯示的問題,你只希望他們在某些情況下顯示?如果是這樣,我建議以某種方式修改顯示代碼。

很難保持強類型(它具有各種優點),同時根據您的獲取動態而動態。當然,如果你總是想要獲取相同的「形狀」數據(例如,每行只有一個值爲decimal),那麼這相當容易 - 讓我知道如果這是你想看到的東西演示。

如果您可以告訴我們關於您的問題的更多信息,我們可能會提供其他解決方案。

+0

對於100列表,讀取冗餘值意味着不必要的網絡IO。另外它也會影響查詢執行計劃。 – 2010-08-17 10:32:10

+0

@Hasan:當然,這就是爲什麼我問什麼是成本。我們當然不知道這個表格目前有100列。 – 2010-08-17 10:54:03

1

我想象它看起來像這樣:

實際上它會看起來就像那樣。首先,建立一個查詢,選擇整個記錄。然後添加一個select(使用Select()方法似乎是最簡單的方法)來限制選擇。 Linq-to-Sql會整理這兩個選擇,並使用正確的reselt,因此只有一個選擇在最終的SQL中。

沒有真正好的方法來選擇多個選擇。我可能會使用開關/外殼。

+0

您是否刪除了您的代碼示例? – 2010-08-18 06:44:46

+0

否。第一行是來自OP的報價,並指代那裏的代碼。 – 2010-08-18 11:22:25