2011-04-06 163 views
0

我想在從查詢返回數據的web服務中使用Linq。由於 從Linq到Sql的返回數據是IEnumerable,因此不可能通過 輕鬆獲取數據集。什麼是返回數據的最佳格式?通過web服務返回linq結果

DataClassesDataContext Dac = new DataClassesDataContext(); 
     Dac.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionCs"].ConnectionString; 
     var query = from record in Dac.RetrieveWorkshops(WorkshopCode, Name) select record; 

回答

0

的Web服務代理實例集合爲數組,所以我得到了到定義「數據傳輸對象」,返回的這些DTO的IEnumerable的的習慣。在你的情況下,你可以定義一個WorkshopDTO對象,它只包含你想要返回的公共屬性,並讓你的LINQ查詢根據它讀取的每條記錄構造它們。然後你的客戶端代理將看到一系列WorkshopDTO的操作。

0

您可以將數據填充到對象中,並返回Web服務中該對象的列表。

例子:

public class WorkshopEntity 
{ 
    string Name { get; set; } 
    string Location { get; set; } 
} 

List<WorkshopEntity> workshopList = (from record in Dac.RetrieveWorkshops(WorkshopCode, Name) select new WorkshopEntity { Name=record.name, Location=record.Location }).ToList(); 
+0

那麼客戶端如何使用webmethod輸出? – 2011-04-06 12:29:38

+0

由於序列化,Web服務的使用者將訪問該對象。 http://msdn.microsoft.com/en-us/library/ms731073.aspx – Lexicon 2011-04-06 12:41:53

0
return query.ToArray(); 

,但記得要加[Serializable] Attribiute你WorkshopEntity類的頂部。

如果您的複雜類型屬性爲WorkshopEntity請通知我,因爲您應該做更多。