let语句用于在Linq表达式中存储子表达式的计算结果。可以在后续的where子句中使用。
例子:
创建控制台应用程序Demo_let
class Program
{
static void Main(string[] args)
{
// 填充数据
List<PersonInfo> pList = new List<PersonInfo>()
{
new PersonInfo{ Name="周瑜", Country="吴", Official="都督", Salary=8000},
new PersonInfo{ Name="典韦", Country="魏", Official="上将", Salary=6000},
new PersonInfo{ Name="张飞", Country="蜀", Official="上将", Salary=6700},
new PersonInfo{ Name="曹操", Country="魏", Official="皇帝", Salary=12000},
new PersonInfo{ Name="许褚", Country="魏", Official="上将", Salary=8000},
new PersonInfo{ Name="关羽", Country="蜀", Official="上将", Salary=8800},
new PersonInfo(){ Name="刘备", Country="蜀", Official="皇帝", Salary=10000},
new PersonInfo{ Name="孙权", Country="吴", Official="皇帝", Salary=11000},
new PersonInfo{ Name="陆逊", Country="吴", Official="都督", Salary=8001}
};
var query = from result in pList
where result.Country == "魏"
let g = result
where g.Salary > 8000// 可以连续多个where
select result;
//遍历分组数据
foreach (var g in query)
{
Console.WriteLine(string.Format("{0} 的薪水为:{1}", g.Name, g.Salary));
}
Console.ReadKey();
}
}
运行:
感觉let跟into作用差不多,都是存储之前查询的结果。供以后的查询使用。