2010-10-28 61 views
1

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

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

我试过,但Visual Studio中显示语法错误。

回答

1

你可以把它缩短了,但不完全一样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"} 
}; 
+0

这是我们可以得到的最短的,谢谢! – bla 2010-10-29 01:33:26

1

没有。你演示的是集合和对象初始值设定项的允许语法。

如果你想缩短有些你可能下降后()关每个初始化的,如:

var list = new List<Staff> 
{ 
    new Staff {ID = 1, Name = "John"}, 
    new Staff {ID = 2, Name = "Mark"} 
} 
0

你可以得到最接近的是:

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

您可以使用Json序列化程序直接将JSON表示形式直接映射到对象图表,即可将反序列化为

相关问题