นี่คือรหัสจากคำตอบของ Marc Gravellพร้อมกับตัวอย่างการใช้งาน
using System;
using System.Collections.Generic;
using System.Linq;
public static class Utils
{
    public static bool IsAny<T>(this IEnumerable<T> data)
    {
        return data != null && data.Any();
    }
}
class Program
{
    static void Main(string[] args)
    {
        IEnumerable<string> items;
        //items = null;
        //items = new String[0];
        items = new String[] { "foo", "bar", "baz" };
        /*** Example Starts Here ***/
        if (items.IsAny())
        {
            foreach (var item in items)
            {
                Console.WriteLine(item);
            }
        }
        else
        {
            Console.WriteLine("No items.");
        }
    }
}
ในขณะที่เขากล่าวว่าลำดับไม่สามารถทำซ้ำได้ดังนั้นบางครั้งรหัสอาจทำให้เกิดปัญหาเพราะIsAny()เริ่มก้าวผ่านลำดับ ฉันสงสัยว่าความหมายของคำตอบของโรเบิร์ตฮาร์วีย์คือคุณมักไม่จำเป็นต้องตรวจสอบnull และว่างเปล่า บ่อยครั้งที่คุณสามารถตรวจสอบค่าว่างแล้วใช้foreachบ่อยครั้งที่คุณก็สามารถตรวจสอบโมฆะและการใช้งานแล้ว
เพื่อหลีกเลี่ยงการเริ่มต้นลำดับสองครั้งและใช้ประโยชน์จากforeachฉันเพิ่งเขียนโค้ดบางอย่างเช่นนี้:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
    static void Main(string[] args)
    {
        IEnumerable<string> items;
        //items = null;
        //items = new String[0];
        items = new String[] { "foo", "bar", "baz" };
        /*** Example Starts Here ***/
        bool isEmpty = true;
        if (items != null)
        {
            foreach (var item in items)
            {
                isEmpty = false;
                Console.WriteLine(item);
            }
        }
        if (isEmpty)
        {
            Console.WriteLine("No items.");
        }
    }
}
ฉันเดาว่าวิธีการขยายช่วยให้คุณพิมพ์ไม่กี่บรรทัด แต่รหัสนี้ดูชัดเจนสำหรับฉัน ฉันสงสัยว่านักพัฒนาบางคนจะไม่ทราบทันทีว่าIsAny(items)จริง ๆ แล้วจะเริ่มก้าวผ่านลำดับ (แน่นอนว่าถ้าคุณใช้ลำดับมากคุณจะเรียนรู้ที่จะทำตามขั้นตอนเหล่านั้นอย่างรวดเร็ว)