我有一个带有子查询的 VB.NET LINQ 查询,其目的是选择一个最匹配的项目。
Dim queryOut = (From x In lstIOsMainStructuresCrossed
Let SearchedVersionID = (From qecm In lstExpectedCountMatch
Join qcm In lstCountMatch
On qecm.Version_id Equals qcm.Version_id And qecm.Expected_count_match Equals qcm.Count_match
Where qcm.Main_str_id = qecm.Main_str_id AndAlso qcm.IO_id = x.IO_id
Order By qcm.Count_match Descending
Select qcm.Version_id).FirstOrDefault
Select x.IO_id, x.Main_structure_id, SearchedVersionID).ToList
问题是 FirstOrDefault 会扼杀查询效率。我不能使用 Take(1) 因为它不产生值。
有没有办法在没有 FirstOrDefault 方法的情况下获得 TOP 1?