Enumerable เทียบเท่า <T> () ว่างสำหรับ IQueryable


130

เมื่อเมธอดส่งคืนIEnumerable<T>และฉันไม่มีอะไรจะคืนเราสามารถใช้Enumerable.Empty<T>().

มีวิธีการส่งคืนเทียบเท่ากับข้างต้นหรือไม่ IQueryable<T>

คำตอบ:


206

อาจจะ:

Enumerable.Empty<T>().AsQueryable();

2
ฉันรู้ว่าตอนนี้เป็นวิธีแก้ปัญหาที่เรียบง่ายและตรงไปตรงมาเท่านั้น
Numan

7
น่าเสียดายที่ไม่ได้สร้าง IQueryable ที่ว่างเปล่าซึ่งหมายความว่าจะทำให้เช่นการUnionสืบค้นถูกแบ่งออกเป็นหลายแบบสอบถามแทนที่จะเป็นหนึ่ง
NetMage




1

ฉันขอแนะนำให้ต่อต้านคำตอบของ alejandrobog เนื่องจากจะยังคงใช้หน่วยความจำเพื่อสร้างอาร์เรย์ว่าง

Array.Empty<T>().AsQueryable();

หรือ

Enumerable.Empty<T>().AsQueryable();

เป็นที่ต้องการ Array.Empty จะจัดสรรอาร์เรย์ที่พิมพ์แบบคงที่ดังนั้นจึงสร้างอาร์เรย์ว่างของ T เพียงอาร์เรย์เดียวและจะแบ่งใช้ระหว่างแบบสอบถามที่ว่างเปล่าทั้งหมด


Array.Empty<T>จะพร้อมใช้งานหลังจาก. NET Framework 4.6 เท่านั้น สำหรับเวอร์ชันก่อนหน้านี้คุณสามารถใช้ได้new object[0].Cast<T>()
TZU
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.