LINQ to SQL 查詢中返回匿名類型的方法
在使用 LINQ to SQL 處理多個表時,返回匿名類型可能會遇到挑戰。請考慮以下示例:
原始方法:
public IQueryable<dog> GetDogs() { var db = new DogDataContext(ConnectString); var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select d; return result; }
此方法成功檢索所有犬類信息。但是,如果我們嘗試使用匿名類型檢索犬類及其品種名稱:
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 類型,而不是匿名類型。
替代方法:自定義類
一種解決方案是創建一個自定義類,例如 DogWithBreed:
public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }
然後可以修改代碼如下:
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; }
這種方法提供了一種類型安全且可重用的解決方案,儘管它需要額外的編碼工作。 選擇自定義類可以避免匿名類型帶來的類型不匹配問題,並提高代碼的可維護性和可讀性。
以上是如何從 LINQ to SQL 查詢傳回匿名類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!