เมื่อเมธอดส่งคืนIEnumerable<T>
และฉันไม่มีอะไรจะคืนเราสามารถใช้Enumerable.Empty<T>()
.
มีวิธีการส่งคืนเทียบเท่ากับข้างต้นหรือไม่ IQueryable<T>
เมื่อเมธอดส่งคืนIEnumerable<T>
และฉันไม่มีอะไรจะคืนเราสามารถใช้Enumerable.Empty<T>()
.
มีวิธีการส่งคืนเทียบเท่ากับข้างต้นหรือไม่ IQueryable<T>
คำตอบ:
อาจจะ:
Enumerable.Empty<T>().AsQueryable();
Union
สืบค้นถูกแบ่งออกเป็นหลายแบบสอบถามแทนที่จะเป็นหนึ่ง
Enumerable.Empty<T>().AsQueryable();
ควรทำ
ลอง return new T[0].AsQueryable();
สมมติว่าคุณมีการIQueryable<T>
เรียกว่าresult
:
return result.Take(0);
ฉันขอแนะนำให้ต่อต้านคำตอบของ alejandrobog เนื่องจากจะยังคงใช้หน่วยความจำเพื่อสร้างอาร์เรย์ว่าง
Array.Empty<T>().AsQueryable();
หรือ
Enumerable.Empty<T>().AsQueryable();
เป็นที่ต้องการ Array.Empty จะจัดสรรอาร์เรย์ที่พิมพ์แบบคงที่ดังนั้นจึงสร้างอาร์เรย์ว่างของ T เพียงอาร์เรย์เดียวและจะแบ่งใช้ระหว่างแบบสอบถามที่ว่างเปล่าทั้งหมด
Array.Empty<T>
จะพร้อมใช้งานหลังจาก. NET Framework 4.6 เท่านั้น สำหรับเวอร์ชันก่อนหน้านี้คุณสามารถใช้ได้new object[0].Cast<T>()