解释代码中具体提到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();

解释代码中具体提到t的地方

这个语法是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)

这意味着:

  1. 选择dc.Survey_Time_Periods
  2. 中的所有项目
  3. 使得item.display == true (filter)
  4. 降序排列item.sort过滤项
  5. 将筛选和排序的项目表示为数组