代码之家  ›  专栏  ›  技术社区  ›  bla

我们可以用类似JSON的语法使用LINQ初始化对象/集合吗?

  •  1
  • bla  · 技术社区  · 14 年前

    我们能做些类似的事情吗?

    var staffs = {
                   "Staff": 
                   [
                    { "ID" : 1, "Name" : "John" },
                    { "ID" : 2, "Name" : "Mark"}
                   ]
                };
    
    foreach (var staff in staffs)
    {
        Console.WriteLine("ID: {0}", staff.ID);
        Console.WriteLine("Name: {0}", staff.Name);
    }
    



    而不是这么长的代码:

    public class Test
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
                return;
    
            List<Staff> staffs = new List<Staff>()
            {
                new Staff() {ID = 1, Name = "John"},
                new Staff() {ID = 2, Name = "Mark"}
            };
    
            foreach (var staff in staffs)
            {
                Console.WriteLine("ID: {0}", staff.ID);
                Console.WriteLine("Name: {0}", staff.Name);
            }
        }
    }
    
    public class Staff
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    

    3 回复  |  直到 14 年前
        1
  •  1
  •   Lasse Espeholt    14 年前

    您可以将其缩短,但不能完全像JSON那样。

    List<Staff> staffs = new List<Staff>()
    {
        new Staff() {ID = 1, Name = "John"},
        new Staff() {ID = 2, Name = "Mark"}
    };
    

    ……你能变成:(这是一个数组,不是 List<T> 但你可以把它包起来)

    var staffs = new[]
    {
        new Staff {ID = 1, Name = "John"},
        new Staff {ID = 2, Name = "Mark"}
    };
    
        2
  •  1
  •   Ahmad Mageed    14 年前

    如果你想把它缩短一点,你可以去掉后面的 () 关闭每个初始值设定项,例如:

    var list = new List<Staff>
    {
        new Staff {ID = 1, Name = "John"},
        new Staff {ID = 2, Name = "Mark"}
    }
    
        3
  •  0
  •   Oded    14 年前

    最接近的是:

    var staffs = new List<Staff> {
                    new Staff{ ID : 1, Name : "John" },
                    new Staff{ ID : 2, Name : "Mark"}
    
                };
    
    foreach (var staff in staffs)
    {
        Console.WriteLine("ID: {0}", staff.ID);
        Console.WriteLine("Name: {0}", staff.Name);
    }
    

    注意:成员名称和值不被引用,而是强类型的(与json不同)。

    反序列化