2013-08-17 82 views
1

我已經開始將一些現有的LINQ to SQL查詢轉換爲使用Stored Procedures的查詢。但是,返回結果的格式不同,我想知道是否有一種巧妙的方法可以將一種格式轉換爲另一種格式。LINQ:How to convert from ISingleResult <T> to IQueryable <int>

因此,舉例來說,我有一個LINQ查詢,返回了我一組的IQueryable格式整數:

public static Func<rdfsDataContext, IQueryable<int>> 
       SubClasses = CompiledQuery.Compile((rdfsDataContext itsRdfsContext) => 
          itsRdfsContext.rdfs_statements.Where(s => s.predicate == kSubClassId) 
          .Select(s => s.subject)); 

當使用存儲過程,通過LINQ再次呼籲,返回的格式爲:

ISingleResult<SubClassesResult> subClasses = itsRdfsContext.SubClasses(kSubClassId); 

其中SubClassesResult是LINQ系統自動生成的一個類,它只包含一個屬性,一個名爲「Subject」的整數。

是否有任何簡單的方法可以將從此存儲過程返回的結果從此ISingleResult子目錄結果>格式轉換爲我以前使用的IQueryable < int>格式?

+0

這可能會有所幫助 - 這是一篇關於LINQ to SQL中表值函數的文章:http://weblogs.asp.net/zeeshanhirani/archive/2008/05/21/table-valued-functions-in-linq-to -sql.aspx – Tim

+0

@Tim,這是完美的謝謝。使用表值函數允許我得到一個IQueryable ,然後我可以使用Select(s => s.subject)來獲取我之後的IQueryable 。 –

回答

3

什麼

subclasses.Select(a=>a.Subject).AsQueryable(); 

+0

這個作品!加上它的優點是我不需要從使用存儲過程切換到表值函數。 –