LINQ to SQL能否返回匿名類型作為結果?
在LINQ to SQL中,如何查詢多個表並將結果與匿名類型結合?
使用匿名類型的初始嘗試
以下示例使用兩個表Dogs
和Breeds
,嘗試使用匿名類型檢索所有狗及其對應的BreedName
:
<code class="language-csharp">public IQueryable<dog> GetDogsWithBreedNames() { var db = new DogDataContext(ConnectString); var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new { Name = d.Name, BreedName = b.BreedName }; return result; }</dog></code>
但是,這會失敗,因為編譯器期望返回Dogs
,而不是匿名類型。
自定義類型
一種解決方案是創建一個自定義類型來表示帶有品種名稱的狗:
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>
使用自定義類型
使用此自定義類型,可以修改查詢以返回所需結果:
<code class="language-csharp">public IQueryable<dogwithbreed> GetDogsWithBreedNames() { var db = new DogDataContext(ConnectString); var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new DogWithBreed() { Dog = d, BreedName = b.BreedName }; return result; }</dogwithbreed></code>
這種方法提供了一種類型安全且可重用的方法,可以使用自定義類型組合來自多個表的結果。 這避免了使用匿名類型時遇到的類型不匹配問題。
以上是LINQ to SQL 查詢可以傳回匿名類型作為結果嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!