C#LINQ问题,为什么需要新的?

5Yr*_*DBA 1 .net c# linq

为什么我们需要newselect对其中一个说法?

var runs = from sampleDataTable in db.SampleData 
           from sampleInfoTable in db.SampleInfo
           where sampleDataTable.SampleInfo.SampleInfoId == sampleInfoTable.SampleInfoId
           select new {sampleDataTable.Timestamp, sampleDataTable.SampleDataId, sampleInfoTable.Lane} ;
Run Code Online (Sandbox Code Playgroud)

var runs2 = from sampleDataTable in db.SampleData
            from sampleInfoTable in db.SampleInfo
            where sampleDataTable.SampleInfo.SampleInfoId == sampleInfoTable.SampleInfoId
               && sampleDataTable.Timestamp == timestamp
            select sampleInfoTable.Lane;
Run Code Online (Sandbox Code Playgroud)

Ian*_*n P 6

因为您选择的是新的匿名类型,而不是单个属性.

示例1将包含IQueryable您的匿名类型..

每个元素都将包含具有您定义的属性的类型.例如:

foreach (var result in resultset)
{
    Console.Writeline(string.Format("{0}\n{1}\n{2}\n{3}\n",
                      result.TimeStamp,
                      result.SampleDataId,
                      result.Lane));
}
Run Code Online (Sandbox Code Playgroud)


Ran*_*der 6

我相信new是必需的,因为您正在创建一个包含select语句中的列和类型的新匿名类型.

  • 它同时执行以下操作:创建新类型(在编译时)并创建该类型的实例(在运行时). (3认同)
  • 这是真的马克.我的观点是新关键字的要求不受匿名类型使用的影响; 使用混凝土类型时也需要它. (3认同)
  • 它与创建新类型无关,而是创建类的实例. (2认同)