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

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

Linda Hamilton
Linda Hamilton原創
2025-01-28 00:16:09841瀏覽

How to Return Anonymous Types from LINQ to SQL Queries?

LINQ to SQL 查詢中返回匿名類型的方法

在使用 LINQ to SQL 處理多個表時,返回匿名類型可能會遇到挑戰。請考慮以下示例:

原始方法:

<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>

此方法成功檢索所有犬類信息。但是,如果我們嘗試使用匿名類型檢索犬類及其品種名稱:

<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>

我們會遇到錯誤,因為編譯器期望返回 Dog 類型,而不是匿名類型。

替代方法:自定義類

一種解決方案是創建一個自定義類,例如 DogWithBreed:

<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;
}</code>

這種方法提供了一種類型安全且可重用的解決方案,儘管它需要額外的編碼工作。 選擇自定義類可以避免匿名類型帶來的類型不匹配問題,並提高代碼的可維護性和可讀性。

以上是如何從 LINQ to SQL 查詢傳回匿名類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn