我对 LINQ 很陌生,并且在阅读一些我必须阅读的代码时遇到了麻烦。我不是在寻找任何人向我解释代码,而是我想知道:
首先,我可以了解哪些合适的搜索词。即当你有多个 Select 语句时你怎么称呼它。我的直觉是这是一个内部连接,但我不熟悉这种 LINQ 语法。
其次,可以指出一些参考资料吗?我已经尝试过了,但我认为我无法提出正确的搜索词限制了我。我要么提出简单的 from where select 语句,要么提出内部联接语句。
代码:
var matchingReading = (from myo in _database.SessionDatabaseObject.Nations ?? new List<Nation>()
where myo.ReportAbbreviation.ToLower() == nationReportAbbr.ToLower()
select (from side in _database.SessionDatabaseObject.Sexes
where sex.Name.ToLower() == sexReportAbbr.ToLower()
select (from recSite in _database.SessionDatabaseObject.RecordingSites
where recSite.NationId == myo.Id
where recSite.SexId == sex.Id
select
(from harnCh in _database.SessionDatabaseObject.Interviewers
where harnCh.RecordingSiteId == recSite.Id
select
(from reading in
_database.SessionDatabaseObject.Readings
where reading.InterviewerId == harnCh.Id
where reading. RunEventId == _entry.Id
select reading))))).ToList();
if (!matchingReading.Any() ||
!matchingReading.First().Any() ||
!matchingReading.First().First().Any() ||
!matchingReading.First().First().First().Any() ||
!matchingReading.First().First().First().First().Any())
return "";
float? height = matchingReading.First().First().First().First().First().Height;
return height.HasValue ? ((int)Math.Floor(height.Value)).ToString() : "";