首頁 > 後端開發 > C++ > 如何在沒有編譯錯誤的情況下將加入的數據從LINQ返回到SQL?

如何在沒有編譯錯誤的情況下將加入的數據從LINQ返回到SQL?

Barbara Streisand
發布: 2025-01-28 00:31:10
原創
953 人瀏覽過

How to Return Joined Data from Linq to SQL Without Compilation Errors?

從Linq to SQL傳回匿名型別結果

在使用Linq to SQL查詢多個資料表時,傳回匿名類型結果可能會帶來挑戰。考慮一個場景,您有Dogs表(包含Name、Age和BreedId)和Breeds表(包含BreedId和BreedName)。要檢索所有狗很簡單:

<code class="language-csharp">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;
}</code>
登入後複製

但是,嘗試使用匿名類型傳回帶有對應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;
}</code>
登入後複製

這是因為Linq to SQL 期望傳回 Dog 類型,但查詢產生的是匿名類型。

使用自訂類別

為了克服這個問題,一個解決方案是建立一個自訂類別來表示所需的結果:

<code class="language-csharp">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;
}</code>
登入後複製

此方法建立一個DogWithBreed類,其中包含Dog和BreedName的屬性。然後,查詢選擇此自訂類別的實例,可用於存取所需資料。

以上是如何在沒有編譯錯誤的情況下將加入的數據從LINQ返回到SQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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