ในการตอบคำถามที่แก้ไข: ในระยะสั้นจะเป็นประโยชน์ในการใช้งาน LINQ ทุกครั้งที่คุณต้องใช้ฟังก์ชั่น "แบบสอบถาม" (นั่นคือสิ่งที่ Q ใน LINQ หมายถึง) การกำหนดโดเมนที่แน่นอนนั้นเป็นเรื่องยาก แต่ก็ช่วยลดความซับซ้อนของงานที่เกี่ยวข้องกับการแยกและจัดการข้อมูลจากคอลเลกชัน
เพื่ออธิบายรายละเอียดเล็กน้อยฟังก์ชั่นการสืบค้นจำนวนมากได้ถูกนำมาใช้โดยตรงกับภาษา (หรือมากกว่านั้นคือ LINQ-implementors ต่าง ๆ ) ดังนั้นสิ่งต่าง ๆ เช่นการรวมการเรียงลำดับการจัดกลุ่มการกรองการฉายเข้าร่วม (และอีกมากมาย) ล้วนได้รับการจัดการ คุณ. โดยทั่วไปแล้วโซลูชั่นที่ใช้ LINQ จะสั้นกว่าถ้าคุณใช้ "ด้วยมือ" และสื่อสารถึงเจตนาของพวกเขาได้ดียิ่งขึ้น
ตัวอย่างง่ายๆที่มักช่วยถ่ายทอดพลังของ LINQ คือการแสดงเนื้อหาของไดเรกทอรีจัดกลุ่มตามส่วนขยาย ดำเนินการผ่านการดำเนินการตามความจำเป็นทั่วไปในหัวของคุณ - จะมีรายละเอียดการใช้งานมากมายตั้งแต่เริ่มแรก บางทีเราจะใช้ a Dictionary<String, List<String>>
เพื่อจัดทำดัชนีไฟล์ตามส่วนขยาย แน่นอนว่าเราจะต้องตรวจสอบว่ามีกุญแจอยู่แล้วยกตัวอย่างรายการเพิ่มเข้าไป ฯลฯ อาจเป็นไปดังนี้:
Dictionary<string, List<string>> fileGroups = new Dictionary<string, List<string>>();
foreach (string file in Directory.GetFiles(Environment.CurrentDirectory))
{
string extension = Path.GetExtension(file).ToLower();
if (!fileGroups.ContainsKey(extension))
{
fileGroups[extension] = new List<string>();
}
fileGroups[extension].Add(file);
}
พิจารณา LINQ ที่เทียบเท่า:
var query = from file in Directory.GetFiles(Environment.CurrentDirectory)
group file by Path.GetExtension(file).ToLower();
โปรดสังเกตว่าข้อความค้นหานั้นมีเพียง 2 บรรทัดซึ่งสั้นกว่าโซลูชันที่จำเป็นใด ๆ ที่เราคิดไว้ นอกจากนี้ยังสามารถอ่านได้สวย; อัตราส่วนสัญญาณต่อเสียงรบกวนจะสูงกว่าเมื่อใช้โซลูชันแรก สำหรับผู้ที่ยังใหม่กับ LINQ คุณจะต้องแสดงผลลัพธ์ของการสืบค้นดังนี้:
foreach (var fileGroup in query)
{
Console.WriteLine(String.Format("*** Files with extension: {0}", group.Key));
foreach (string file in fileGroup)
{
Console.WriteLine(file);
}
}
ด้วยตัวอย่างที่ซับซ้อนมากขึ้นความแตกต่างก็จะยิ่งมากขึ้นตามปกติ (ลองพิจารณาการจัดกลุ่มตามเขตข้อมูลหลาย ๆ ตัวอย่าง) ดังนั้นเพื่อสรุป LINQ สามารถแก้ปัญหาการสืบค้นข้อมูลแบบวันต่อวันได้หลายวิธีซึ่งมักจะสั้นกว่าและอธิบายตัวเองได้มากกว่า สิ่งนี้มีค่าใช้จ่ายเพียงเล็กน้อยในการเรียนรู้ไวยากรณ์และเทคโนโลยี แต่ประโยชน์ที่ได้นั้นมีค่ามากกว่าเชิงลบอย่างมาก