首頁 > 後端開發 > C++ > 如何從 LINQ to SQL 查詢傳回匿名類型?

如何從 LINQ to SQL 查詢傳回匿名類型?

Linda Hamilton
發布: 2025-01-28 00:16:09
原創
840 人瀏覽過

How to Return Anonymous Types from LINQ to SQL Queries?

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板