Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
568 views
in Technique[技术] by (71.8m points)

c# - IEnumerable.Select with index

I have the following code:

 var accidents = text.Skip(NumberOfAccidentsLine + 1).Take(numberOfAccidentsInFile).ToArray();

where accidents is an array of strings.

I want to make a Linq transformation from the string array to an array of Accident objects as follows:

 return accidents.Select(t => new Accident() {Id = i, Name = t.Replace(""", string.Empty)}).ToArray();

How do I retrieve the index i from the accidents array using Linq or do I have to go old school?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I'm not sure what kind of index you're looking for, but if it's just set of consecutive numbers then you're lucky. There is Select overload that does exactly that:

return accidents.Select((t, i) => new Accident() {Id = i, Name = t.Replace(""", string.Empty)}).ToArray();

It expects a delegate that takes two parameters - the item and its index.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...