มีนิพจน์ linq ง่ายบรรทัดเดียวเพื่อรับทุกอย่างจากอาร์เรย์ธรรมดายกเว้นองค์ประกอบแรกหรือไม่?
for (int i = 1; i <= contents.Length - 1; i++)
Message += contents[i];
ฉันแค่อยากจะดูว่ามันง่ายกว่าที่จะควบแน่น
มีนิพจน์ linq ง่ายบรรทัดเดียวเพื่อรับทุกอย่างจากอาร์เรย์ธรรมดายกเว้นองค์ประกอบแรกหรือไม่?
for (int i = 1; i <= contents.Length - 1; i++)
Message += contents[i];
ฉันแค่อยากจะดูว่ามันง่ายกว่าที่จะควบแน่น
คำตอบ:
ใช่Enumerable.Skipไม่สิ่งที่คุณต้องการ:
contents.Skip(1)
อย่างไรก็ตามผลลัพธ์คือ IEnumerable <T> หากคุณต้องการรับอาร์เรย์ใช้:
contents.Skip(1).ToArray()
สิ่งต่อไปนี้จะเทียบเท่ากับfor
ลูปของคุณ:
foreach (var item in contents.Skip(1))
Message += item;
var item
ไหม ??
contents
อาร์เรย์ในตัวอย่างใหม่ของArraySegment<>
struct ในขณะที่คำตอบข้างต้นถูกเขียนที่ไม่ได้ประโยชน์อย่างยิ่ง แต่เนื่องจาก .NET 4.5ArraySegment<>
การดำเนินการIList<>
,IReadOnlyList<>
และการเชื่อมต่อฐานของพวกเขา (รวมIEnumerable<>
) เพื่อให้คุณสามารถเช่นผ่านไปArraySegment<>
string.Join