با استفاده از دستور و کلمهی کلیدی let می توانیم یک range variable جدید را اصطلاحاً project نماییم. این موضوع اجازه می دهد تا به راحتی یک expression را دوباره مورد استفاده قرار بدهید و همچنین قابلیت خوانایی query نوشته شده را افزایش بدهید. برای مثال می توانید مقادیر رشته ای موجود را با یکدیگر مقایسه کنیم و رشتهای که با حروف کوچک و یا اصطلاحاً lowercase نوشته شده است را شبیه به کد زیر انتخاب نماییم.
IList<Student> studentList = new List<Student>() {
new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
new Student() { StudentID = 2, StudentName = "Steve", Age = 21 } ,
new Student() { StudentID = 3, StudentName = "Bill", Age = 18 } ,
new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
new Student() { StudentID = 5, StudentName = "Ron" , Age = 21 }
};
var lowercaseStudentNames = from s in studentList
where s.StudentName.ToLower().StartsWith("r")
select s.StudentName.ToLower();
همانطور که مشاهده می کنید متد ToLower چندین بار در query نوشته شده در قسمت بالا مورد استفاده قرار گرفته است. حال مثال زیر استفاده از کلمه کلیدی let برای یک متغیر جدید دیگر به نام ‘lowercaseStudentName’ را نشان می دهد که در قسمت های مختلف query مورد استفاده قرار میگیرند. بنابراین به راحتی میتوان با استفاده از کلمه let نه تنها یک متغیر را تعریف کرد بلکه query نوشته شده را نیز خواناتر نمود.
var lowercaseStudentNames = from s in studentList
let lowercaseStudentName = s.StudentName.ToLower()
where lowercaseStudentName.StartsWith("r")
select lowercaseStudentName;
foreach (var name in lowercaseStudentNames)
Console.WriteLine(name)
خروجی این کد شبیه به قسمت زیر خواهد بود.
[output]
ram
ron
[/output]
منبع:وبسایت پرووید