2010-05-24 44 views
4
var details= from row in databaseTable 
    where row.id equals queryId 
    select new 
    { 
     Dict = row.ToDictionary(x => x.Name, x => x.Value), 
    }; 

執行此LINQ to SQL時,出現錯誤;LINQ to SQL - 不支持ToDictionary - 如何將結果拉入內存?

System.NotSupportedException:本 查詢運算符 'ToDictionary' 不是 支持。

我需要做的是將行拉入內存中,但我不知道如何。我嘗試過在各個地方調用ToList,但沒有運氣。

回答

5
var fixTotaliserDetails = (from row in databaseTable 
          where row.id == queryId 
          select new 
          { 
          row.Name, 
          row.Value, 
          }) 
          .ToDictionary(x=>x.Name, x=>x.Value); 

這將工作。我認爲你可能已經過分簡化了你的回答,因爲在linq-to-sql中表中的一個項目並不實現IEnumerable<T>

+0

只是打敗了我。這裏的關鍵是您需要先將數據提取回來,然後將其翻譯成字典。它必須作爲原始數據從DB返回,然後進行修改以適應OO視角。 – Stephan 2010-05-24 15:17:38

2

你試過了嗎?

var fixTotaliserDetails = (from row in databaseTable 
    where row.id equals queryId 
    select name = x.Name, value = x.Value).ToDictionary(x => x.name); 

,如果你想通過值來搜索,然後用.ToDictionary(x => x.value);改變.ToDictionary(x => x.name);

希望這會有所幫助。