解释代码中具体提到t的地方
本文关键字:代码 解释 | 更新日期: 2023-09-27 18:13:11
我想知道下面这行代码中的t
代表什么。"t"是用户定义的还是依赖于数据库?
Survey_Time_Period[] getTimePeriods =
(from t in dc.Survey_Time_Periods
where t.display == true orderby t.sort descending select t)
.ToArray();
这个语法是LINQ查询。你可以在这里看到很多很棒的LINQ示例。
t
是一个范围变量,表示从dc.Survey_Time_Periods
中枚举的任何类型的枚举实例,在本例中是单个Survey_Time_Period
对象。t
只在LINQ查询的上下文中有效。稍后在LINQ查询中,它对Survey_Time_Period.display
属性进行过滤,然后按Survey_Time_Period.sort
属性排序,然后返回Survey_Time_Period
的结果实例。
有两种LINQ语法,在其他LINQ语法中查看等效语句可能会对您有所帮助。这种替代语法使用lambda表达式。
Survey_Time_Period[] getTimePeriods = dc.Survey_Time_Periods
.Where(t => t.display == true)
.OrderByDescending(t => t.sort)
.ToArray();
注意你的变量名不符合c#标准。不要在变量名中使用下划线,也不要在变量前加上动词。此外,也没有必要将布尔值与true进行比较,因为布尔值已经表示真或假。如果您调整类型名称和变量名称,它会变得更简洁:
var timePeriods = dc.SurveyTimePeriods
.Where(stp => stp.Display)
.OrderByDescending(stp => stp.Sort)
.ToArray();
让我们用另一种格式重写Linq:
Survey_Time_Period[] getTimePeriods = dc.Survey_Time_Periods // Source
.Where(item => item.display) // Filter
.OrderByDescending(item => item.sort) // Sorting
.ToArray(); // Materialization (representation)
这意味着:
- 选择
dc.Survey_Time_Periods
中的所有项目 - 使得
item.display == true
(filter) - 按降序排列
item.sort
过滤项 - 将筛选和排序的项目表示为数组