2010-07-13 55 views
0

我有5個值添加到列表中。如何使用更少的代碼行來使它更清潔?列表和陣列

String[] values= new String[] { "AA", "BB", "CC", "DD", "EE", "FF" }; 
Values= new List<ValuesRow>(); 
     foreach (var item in values) 
     {    
      Values.Add(new ValuesRow 
      { 
       Name = item, 
       ID = 0 
      }); 
     } 

public class ValuesRow 
{ 
    public String Name { get; set; } 
    public String ID { get; set; } 
} 

回答

1

你也可以初始化列表是這樣的:如果你需要添加只有 5記錄它們在編譯時已知用更少的代碼,你可以試試這個

Values = new List<ValuesRow> { new ValuesRow { Name = "AA", ID = 0}, 
           new ValuesRow { Name = "BB", ID = 0} 
          }; 
6

如果列表中不存在,因爲你的樣品中:

var names = new[] { "AA", "BB", "CC", "DD", "EE", "FF" }; 
var Values = names.Select(name => new ValuesRow { Name = name, ID = "0" }).ToList(); 

否則

var names = new[] { "AA", "BB", "CC", "DD", "EE", "FF" }; 
var newElements = names.Select(name => new ValuesRow { Name = name, ID = "0" }); 
Values.AddRange(newElements); 
1

你可以使用AddRange方法或從陣列創建新的列表。

Values.AddRange(values.Select((value, index) => new ValuesRow {Name = value, ID = index.ToString() })); 
+0

或者只是使用該數組作爲構造函數參數。 – Gertjan 2010-07-13 07:27:19

0
List<ValuesRow> vR = new List<ValuesRow>(); 

foreach(string item in values) 
{ 
vR.Add(new ValuesRow {item,"0"}); 
} 

難道你想這樣嗎?

6

 var Values = new List<ValuesRow> 
     { 
      new ValuesRow{Name="Value1", ID="1"} 
      new ValuesRow{Name="Value2", ID="2"} 
      new ValuesRow{Name="Value3", ID="3"} 
      new ValuesRow{Name="Value4", ID="4"} 
      new ValuesRow{Name="Value5", ID="5"} 
     }; 
+1

在這種情況下,通過在ValuesRow上實現一個構造函數,這也可能會稍微縮短一點,您可以使用:new ValuesRow(「Value1」,「1」) – Gertjan 2010-07-13 07:24:58

+0

這是一條很長的路。你可以使用循環。 – 2010-07-13 07:26:20

+0

@Serkan這是你的個人意見。 – Incognito 2010-07-13 07:50:26

0
String[] values= new String[] { "AA", "BB", "CC", "DD", "EE", "FF" }; 
var Values = new List<ValuesRow>(); 
Values.AddRange(values.Select(v => new ValuesRow() {Name = v, ID = "0"})); 
0

如何使用對象初始化程序,它的工作原理是這樣的:

 var values = new List<ValuesRow> 
         { 
          new ValuesRow {ID = "0", Name = "AA"}, 
          new ValuesRow {ID = "0", Name = "BB"}, 
          new ValuesRow {ID = "0", Name = "CC"}, 
          new ValuesRow {ID = "0", Name = "DD"}, 
          new ValuesRow {ID = "0", Name = "EE"}, 
          new ValuesRow {ID = "0", Name = "FF"} 
         };