2011-08-29 35 views
4

我有一個整數數組,說int[] vals如何在C#中使用linq查詢中的局部變量?

我想使用linq查詢從這個整數數組中獲取點列表。

舉例來說,如果我有數組是這樣的:

vals = new int[]{20,25,34}; 

我想我點的列表作爲

var points = List<Point>{new Point(1,20),new Point(2,25),new Point(3,34)}; 

我想用它加1所有int類型的局部變量在我的數組中,這將是我的觀點的x值。

如何在C#中使用LINQ來實現此結果?

回答

9

你可以使用的Select第二超載:

var list = vals.Select((val, idx) => new Point(idx + 1, val)).ToList(); 

其中idxvalvalsindex

0
var vals = new int[]{20,25,34}; 
var x = 1; 
var points = vals.Select((val) => new Point(x++,val)).ToList(); 
+0

@Downvoter,你對此有何評論? OP要求在查詢中使用局部變量,這就是我所做的...... – Lucero

0

或第三個選項 - 獲得序數枚舉和項目使用它和你的原始數組。

var points = Enumerable.Range(1, vals.Count()) 
    .Select(i => new Point(i, vals[i - 1])).ToList(); 
0
 var vals = new int[] { 20, 25, 34 }; 
     int i = 0; 
     var points = vals.ToList().ConvertAll(delegate(int v) { return new Point(++i, v); });