How to use local variable in linq query in C#?
I have an array of integers say int[] vals
.
I want to use linq query to get a list of points from this array of ints.
For example if i have array like this:
vals = new int[]{20,25,34};
I want my list of points as
var points = List<Point>{new Point(1,20),new Point(2,25),new Point(3,34)};
I want to use a local variable which is incremented by 1 for all int values in my array which will be the x value of my point.
How can I achieve this result usi开发者_开发知识库ng LINQ in C# ?
You could use the 2nd overload of Select:
var list = vals.Select((val, idx) => new Point(idx + 1, val)).ToList();
where idx
is the index
of val
in vals
.
var vals = new int[]{20,25,34};
var x = 1;
var points = vals.Select((val) => new Point(x++,val)).ToList();
Or a third option - get an ordinal enumeration and project using that and your original array.
var points = Enumerable.Range(1, vals.Count())
.Select(i => new Point(i, vals[i - 1])).ToList();
var vals = new int[] { 20, 25, 34 };
int i = 0;
var points = vals.ToList().ConvertAll(delegate(int v) { return new Point(++i, v); });
精彩评论