2009-03-02 26 views
2

考慮下面的存儲過程:返回匿名類型的存儲過程LINQ2SQL

SELECT * FROM Customers; 

SELECT Customer.Id, Customer.Name, Order.Total, Order.DateOrdered 
FROM Customers INNER JOIN Orders ON Customers.Id = Orders.CustomerId; 

過程顯然返回一個我試圖檢索與此部分類方法兩個結果集:

public partial class DBSproc : DataContext 
{ 
    [Function(Name = "dbo.spGetCustomersAndOrders")] 
    [ResultType(typeof(Customer))] 
    // What type should I use here for the second resultset? 
    [ResultType(typeof(... what here? ...))] 
    public IMultipleResults GetCustomersAndOrders() 
    { 
     IExecuteResult result = 
      this.ExecuteMethodCall(this, 
       ((MethodInfo)(MethodInfo.GetCurrentMethod()))); 

     return (IMultipleResults)(result.ReturnValue); 
    } 
} 

我知道第一個結果集將映射到Customer實體,但第二個結果集呢?第二個是自定義選擇,組合多個表中的多個列。我沒有這些屬性的實體。

我應該爲該結果集創建一個虛擬實體嗎?我希望我能以某種方式使用匿名類型進行這種即席查詢。

感謝。

+1

恥辱看到這個問題沒有「有用」的答案,我希望會有一個! – Jon 2010-01-05 04:38:20

回答

0

一般而言,只有當返回類型爲「object」時,纔可以從方法返回匿名類型。然後,調用代碼不知道匿名類型可能具有哪些屬性,除非它使用反射。

所以是的,你可以使用匿名類型,但你可能不想,因爲它不是很有用。

+0

當你想返回與json相同的對象時它很有用 – om471987 2013-05-26 10:15:47