I have a VB.NET LINQ query with a subquery which intention is to select one, best matching, item.
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
The problem is FirstOrDefault kills the query efficiency. I cannot use Take(1) as it does not produce a value.
Is there a way to get TOP 1 without FirstOrDefault method?