NET問答: 如何動態的將 匿名類型 添加到 List ?

諮詢區

  • DHornpout

我可以像下面這樣創建一個匿名類型。


var o = new { Id = 1, Name = "Foo" };

是否有辦法可以將上面的匿名類型添加到 List 中 ?類似如下的僞代碼:


var o = new { Id = 1, Name = "Foo" };
var o1 = new { Id = 2, Name = "Bar" };

List<var> list = new List<var>();
list.Add(o);
list.Add(o1);

或者下面這樣:


List<var> list = new List<var>();

while (....)
{
    ....
    list.Add(new {Id = x, Name = y});
    ....
}

回答區

  • Jermismo

你可以這樣試一試。


var o = new { Id = 1, Name = "Foo" };
var o1 = new { Id = 2, Name = "Bar" };

var array = new[] { o, o1 };

var list = array.ToList();

list.Add(new { Id = 3, Name = "Yeah" });

😄,上面的代碼對我來說有一些不美觀,但沒毛病。


  • Bassem

如果你使用的是 C#7 以上,建議用 ValueTuple 來替代匿名類型。


        static void Main(string[] args)
        {
            var list = new List<(int Id, string Name)>();

            list.Add((Id: 1, Name: "Foo"));
            list.Add((Id: 2, Name: "Bar"));
        }


  • Tom Dee

你可以創建一個 dynamic 類型的 List,如下代碼所示:


List<dynamic> anons=new List<dynamic>();

foreach (Model model in models)
{
   var anon= new
   {
      Id = model.Id,
      Name=model.Name
   };

   anons.Add(anon);
}

點評區

從幾位大佬的回答中可以總結出:

  • 使用dymanic。

  • 先設法初始化出帶有匿名的 List,再圖後續插入。

  • 使用更加語義化的 ValueTuple

我覺得解決樓主的問題,市面上大概也就這幾類吧,歡迎大家補充!(小編也自我感覺學到了不少小技巧 🤭🤭🤭)

原文鏈接:https://stackoverflow.com/questions/612689/a-generic-list-of-anonymous-class


本文分享自微信公衆號 - 一線碼農聊技術(dotnetfly)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章