Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

โปรแกรม C# สำหรับข้ามองค์ประกอบจากลำดับตราบใดที่เงื่อนไขที่ระบุเป็นจริง

ใช้เมธอด SkipWhile() เพื่อข้ามองค์ประกอบจากลำดับ (Sequence) ตราบใดที่เงื่อนไขที่ระบุยังคงเป็นจริง เมธอดนี้จะหยุดข้ามทันทีที่พบองค์ประกอบที่ไม่ตรงตามเงื่อนไข

ตัวอย่างข้อมูลและเงื่อนไข

อาร์เรย์ตัวอย่าง:

int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };

เงื่อนไข: ข้ามค่าที่มากกว่าหรือเท่ากับ 50

s => s >= 50

เนื่องจากอาร์เรย์ไม่ได้เรียงลำดับ จึงควรเรียงลำดับก่อน (เช่น เรียงจากมากไปน้อย) เพื่อให้ SkipWhile ทำงานตามที่คาดหวัง

ตัวอย่างโค้ดเต็ม

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };
        // ข้ามค่าที่ >= 50 หลังจากเรียงลำดับจากมากไปน้อย
        IEnumerable selMarks = marks.AsQueryable()
            .OrderByDescending(s => s)
            .SkipWhile(s => s >= 50);

        Console.WriteLine("ข้ามคะแนน > 50 แล้ว...");
        foreach (int res in selMarks)
        {
            Console.WriteLine(res);
        }
    }
}

ผลลัพธ์

ข้ามคะแนน > 50 แล้ว...
48
42
35

สังเกต: SkipWhile จะข้ามองค์ประกอบตั้งแต่ต้นลำดับจนกว่าจะพบค่าที่ไม่ตรงเงื่อนไข (คือค่าน้อยกว่า 50) แล้วจึงส่งค่าที่เหลือทั้งหมดกลับมา