LINQ - ตัวดำเนินการสืบค้น
ชุดของวิธีการขยายที่สร้างรูปแบบแบบสอบถามเรียกว่า LINQ Standard Query Operators ในฐานะหน่วยการสร้างของนิพจน์การสืบค้น LINQ ตัวดำเนินการเหล่านี้มีความสามารถในการสืบค้นต่างๆเช่นการกรองการเรียงลำดับการฉายภาพการรวม ฯลฯ
ตัวดำเนินการแบบสอบถามมาตรฐาน LINQ สามารถแบ่งออกเป็นตัวดำเนินการดังต่อไปนี้ตามฟังก์ชันการทำงาน
- ตัวดำเนินการกรอง
- เข้าร่วม Operators
- การดำเนินการฉาย
- ตัวดำเนินการเรียงลำดับ
- การจัดกลุ่มตัวดำเนินการ
- Conversions
- Concatenation
- Aggregation
- การดำเนินการของ Quantifier
- การทำงานของพาร์ติชัน
- การดำเนินงานรุ่น
- ตั้งค่าการทำงาน
- Equality
- ตัวดำเนินการองค์ประกอบ
ตัวดำเนินการกรอง
การกรองเป็นการดำเนินการเพื่อ จำกัด ชุดผลลัพธ์เพื่อให้มีองค์ประกอบที่เลือกเท่านั้นที่ตรงตามเงื่อนไขเฉพาะ
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
ที่ไหน | กรองค่าตามฟังก์ชันเพรดิเคต | ที่ไหน | ที่ไหน |
OfType | กรองค่าตามความสามารถในการเป็นประเภทที่ระบุ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
เข้าร่วม Operators
การเข้าร่วมหมายถึงการดำเนินการที่มีการกำหนดเป้าหมายแหล่งข้อมูลที่มีความสัมพันธ์ที่ยากต่อการติดตามซึ่งกันและกันในทางตรง
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
เข้าร่วม | ตัวดำเนินการเข้าร่วมสองลำดับบนพื้นฐานของคีย์ที่ตรงกัน | เข้าร่วม…ใน…บน…เท่ากับ… | จาก x In …, y In …โดยที่ xa = ya |
GroupJoin | เข้าร่วมสองลำดับและจัดกลุ่มองค์ประกอบที่ตรงกัน | เข้าร่วม…ใน…บน…เท่ากับ…เข้า… | เข้าร่วมกลุ่ม ... ใน ... บน ... |
การดำเนินการฉาย
การฉายภาพคือการดำเนินการที่วัตถุถูกเปลี่ยนเป็นรูปแบบใหม่โดยมีคุณสมบัติเฉพาะเท่านั้น
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
เลือก | ตัวดำเนินการจะแสดงค่าบนพื้นฐานของฟังก์ชันการแปลง | เลือก | เลือก |
SelectMany | ตัวดำเนินการจะแสดงลำดับของค่าซึ่งขึ้นอยู่กับฟังก์ชันการแปลงและทำให้แบนเป็นลำดับเดียว | ใช้หลายจากอนุประโยค | ใช้คำสั่ง From หลาย ๆ |
ตัวดำเนินการเรียงลำดับ
การดำเนินการเรียงลำดับอนุญาตให้จัดลำดับองค์ประกอบของลำดับบนพื้นฐานของแอตทริบิวต์เดียวหรือมากกว่า
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
สั่งโดย | ตัวดำเนินการจัดเรียงค่าตามลำดับจากน้อยไปมาก | สั่งโดย | สั่งโดย |
OrderByDescending | ตัวดำเนินการจัดเรียงค่าตามลำดับจากมากไปหาน้อย | ตามลำดับ ... | เรียงตาม ... จากมากไปน้อย |
โดย | ดำเนินการเรียงลำดับรองตามลำดับจากน้อยไปมาก | สั่งโดย …, … | สั่งโดย …, … |
ThenByDescending | ดำเนินการเรียงลำดับรองตามลำดับจากมากไปหาน้อย | ตามลำดับ…, …จากมากไปน้อย | เรียงลำดับตาม…, …จากมากไปน้อย |
ย้อนกลับ | ดำเนินการกลับลำดับขององค์ประกอบในคอลเลกชัน | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
การจัดกลุ่มตัวดำเนินการ
ตัวดำเนินการใส่ข้อมูลลงในบางกลุ่มตามแอตทริบิวต์ที่ใช้ร่วมกันทั่วไป
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
GroupBy | จัดระเบียบลำดับของรายการในกลุ่มและส่งคืนเป็นคอลเล็กชันประเภท IGrouping <key, element> ที่ไม่สามารถคำนวณได้ | กลุ่ม…ตาม - หรือ - กลุ่ม…โดย…เป็น… | กลุ่ม…โดย…เป็น… |
ToLookup | ดำเนินการดำเนินการจัดกลุ่มซึ่งจะส่งคืนลำดับของคู่คีย์ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
Conversion
ตัวดำเนินการเปลี่ยนประเภทของวัตถุอินพุตและใช้ในแอพพลิเคชั่นที่หลากหลาย
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
AsEnumerable | ส่งคืนอินพุตที่พิมพ์เป็น IEnumerable <T> | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
AsQueryable | A (ทั่วไป) IEnumerable ถูกแปลงเป็น (ทั่วไป) IQueryable | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
นักแสดง | ดำเนินการแคสต์องค์ประกอบของคอลเล็กชันเป็นชนิดที่ระบุ | ใช้ตัวแปรช่วงที่พิมพ์อย่างชัดเจน เช่น: จากสตริง str ในคำ | จาก…เป็น… |
OfType | ค่าฟิลเตอร์โดยขึ้นอยู่กับความสามารถในการแคสเป็นประเภทเฉพาะ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ToArray | บังคับให้ดำเนินการสืบค้นและทำการแปลงคอลเลกชันเป็นอาร์เรย์ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ToDictionary | บนพื้นฐานของฟังก์ชันตัวเลือกคีย์กำหนดองค์ประกอบในพจนานุกรม <TKey, TValue> และบังคับให้ดำเนินการสืบค้น LINQ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ToList | บังคับให้เรียกใช้แบบสอบถามโดยการแปลงคอลเลกชันเป็นรายการ <T> | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ToLookup | บังคับให้ดำเนินการสืบค้นและใส่องค์ประกอบลงใน Lookup <TKey, TElement> โดยใช้ฟังก์ชันตัวเลือกคีย์ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
การเชื่อมต่อ
ดำเนินการต่อกันของสองลำดับและค่อนข้างคล้ายกับตัวดำเนินการ Union ในแง่ของการดำเนินการยกเว้นข้อเท็จจริงที่ว่าสิ่งนี้ไม่ได้ลบรายการที่ซ้ำกัน
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
Concat | ลำดับสองลำดับเชื่อมต่อกันสำหรับการก่อตัวของลำดับเดียว | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
การรวม
ดำเนินการรวมประเภทที่ต้องการและอนุญาตให้สร้างการรวมแบบกำหนดเองใน LINQ
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
รวม | ดำเนินการกับค่าของคอลเล็กชันเพื่อดำเนินการรวมแบบกำหนดเอง | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
เฉลี่ย | คำนวณค่าเฉลี่ยของคอลเล็กชันค่า | ไม่สามารถใช้ได้ | รวม ... ใน ... เป็นค่าเฉลี่ย () |
นับ | นับองค์ประกอบที่ตรงตามฟังก์ชันเพรดิเคตภายในคอลเลกชัน | ไม่สามารถใช้ได้ | รวม ... ใน ... นับ () |
LonCount | นับองค์ประกอบที่ตรงตามฟังก์ชันเพรดิเคตภายในคอลเลคชันขนาดใหญ่ | ไม่สามารถใช้ได้ | รวม ... ใน ... เป็น LongCount () |
สูงสุด | ค้นหามูลค่าสูงสุดภายในคอลเลกชัน | ไม่สามารถใช้ได้ | รวม ... ใน ... เป็น Max () |
นาที | ค้นหามูลค่าขั้นต่ำที่มีอยู่ในคอลเลกชัน | ไม่สามารถใช้ได้ | รวม ... ใน ... เป็นนาที () |
ผลรวม | ค้นหาผลรวมของค่าภายในคอลเล็กชัน | ไม่สามารถใช้ได้ | รวม ... ใน ... ผลรวม () |
การดำเนินการของ Quantifier
ตัวดำเนินการเหล่านี้ส่งคืนค่าบูลีนเช่น True หรือ False เมื่อองค์ประกอบบางส่วนหรือทั้งหมดภายในลำดับตรงตามเงื่อนไขที่ระบุ
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
ทั้งหมด | ส่งคืนค่า 'True' หากองค์ประกอบทั้งหมดของลำดับตรงตามเงื่อนไขเพรดิเคต | ไม่สามารถใช้ได้ | รวม…ใน…รวมทั้งหมด (…) |
ๆ | กำหนดโดยการค้นหาลำดับว่าองค์ประกอบใด ๆ ที่เหมือนกันตรงตามเงื่อนไขที่ระบุหรือไม่ | ไม่สามารถใช้ได้ | รวม ... ใน ... เป็นอะไรก็ได้ () |
ประกอบด้วย | ส่งคืนค่า 'True' หากพบว่ามีองค์ประกอบที่เฉพาะเจาะจงอยู่ในลำดับหากลำดับไม่มีองค์ประกอบนั้นค่า 'เท็จ' จะถูกส่งกลับ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ตัวดำเนินการพาร์ติชัน
แบ่งลำดับการป้อนข้อมูลออกเป็นสองส่วนแยกกันโดยไม่ต้องจัดเรียงองค์ประกอบของลำดับใหม่แล้วส่งคืนหนึ่งในนั้น
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
ข้าม | ข้ามจำนวนองค์ประกอบที่ระบุภายในลำดับและส่งคืนองค์ประกอบที่เหลือ | ไม่สามารถใช้ได้ | ข้าม |
ข้าม | เช่นเดียวกับการข้ามโดยมีข้อยกเว้นเพียงอย่างเดียวว่าจำนวนองค์ประกอบที่จะข้ามถูกระบุโดยเงื่อนไขบูลีน | ไม่สามารถใช้ได้ | ข้ามขณะ |
ใช้ | ใช้จำนวนองค์ประกอบที่ระบุจากลำดับและข้ามองค์ประกอบที่เหลือ | ไม่สามารถใช้ได้ | ใช้ |
TakeWhile | เช่นเดียวกับ Take ยกเว้นข้อเท็จจริงที่ว่าจำนวนองค์ประกอบที่จะใช้ถูกระบุโดยเงื่อนไขบูลีน | ไม่สามารถใช้ได้ | ใช้เวลาสักครู่ |
การดำเนินงานรุ่น
ลำดับใหม่ของค่าถูกสร้างขึ้นโดยตัวดำเนินการ generational
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ไวยากรณ์นิพจน์การค้นหา C # | VB Query Expression Syntax |
---|---|---|---|
DefaultIfEmpty | เมื่อนำไปใช้กับลำดับว่างให้สร้างองค์ประกอบเริ่มต้นภายในลำดับ | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ว่างเปล่า | ส่งคืนลำดับค่าว่างและเป็นตัวดำเนินการสร้างที่ง่ายที่สุด | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
พิสัย | สร้างคอลเลกชันที่มีลำดับของจำนวนเต็มหรือตัวเลข | ไม่สามารถใช้ได้ | ไม่สามารถใช้ได้ |
ทำซ้ำ | Generates a sequence containing repeated values of a specific length | Not Applicable | Not Applicable |
Set Operations
There are four operators for the set operations, each yielding a result based on different criteria.
Show Examples
Operator | Description | C# Query Expression Syntax | VB Query Expression Syntax |
---|---|---|---|
Distinct | Results a list of unique values from a collection by filtering duplicate data if any | Not Applicable | Distinct |
Except | Compares the values of two collections and return the ones from one collection who are not in the other collection | Not Applicable | Not Applicable |
Intersect | Returns the set of values found t be identical in two separate collections | Not Applicable | Not Applicable |
Union | Combines content of two different collections into a single list that too without any duplicate content | Not Applicable | Not Applicable |
Equality
Compares two sentences (enumerable ) and determine are they an exact match or not.
Show Examples
Operator | Description | C# Query Expression Syntax | VB Query Expression Syntax |
---|---|---|---|
SequenceEqual | Results a Boolean value if two sequences are found to be identical to each other | Not Applicable | Not Applicable |
Element Operators
Except the DefaultIfEmpty, all the rest eight standard query element operators return a single element from a collection.
Show Examples
Operator | Description | C# Query Expression Syntax | VB Query Expression Syntax |
---|---|---|---|
ElementAt | Returns an element present within a specific index in a collection | Not Applicable | Not Applicable |
ElementAtOrDefault | Same as ElementAt except of the fact that it also returns a default value in case the specific index is out of range | Not Applicable | Not Applicable |
First | Retrieves the first element within a collection or the first element satisfying a specific condition | Not Applicable | Not Applicable |
FirstOrDefault | Same as First except the fact that it also returns a default value in case there is no existence of such elements | Not Applicable | Not Applicable |
Last | Retrieves the last element present in a collection or the last element satisfying a specific condition | Not Applicable | Not Applicable |
LastOrDefault | Same as Last except the fact that it also returns a default value in case there is no existence of any such element | Not Applicable | Not Applicable |
Single | Returns the lone element of a collection or the lone element that satisfy a certain condition | Not Applicable | Not Applicable |
SingleOrDefault | Same as Single except that it also returns a default value if there is no existence of any such lone element | Not Applicable | Not Applicable |
DefaultIfEmpty | Returns a default value if the collection or list is empty or null | Not Applicable | Not Applicable |