0

我有一个带有子查询的 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?

4

0 回答 0