Я смотрю на F# в данный момент также, и я использую книжный F# Эксперта, который я нахожу довольно полезными. Я сокращаю к преследованию довольно быстро, но если Вы не новичок, не трудно следовать за imo.
Просто используйте .FirstOrDefault ()
var var_QUERY_linq = (
from vm_TABLE_PK in vco_DataTable_PK.AsEnumerable()
where vm_TABLE_PK.Field<Int32>( "MyField_Int32" ) == vmp_ROW_Counter_Int32
select vm_TABLE_PK).FirstOrDefault();
if(var_QUERY_linq != null)
{
//There is a record
}
Я предполагаю, что MyField - это поле, в котором вы хотите получить значение
var result = vm_Table_Pk.DefaultIfEmpty().First().MyField;
. Вы также можете установить результат по умолчанию, отличный от NULL. Например:
var result = vm_Table_Pk.DefaultIfEmpty("Missing").First().MyField;
И не волнуйтесь, Intellisense поможет вам в этом.
Я столкнулся с проблемой порядка элементов (OrderBy), когда я использую FirstOrDefault для поиска первого элемента в списке.
Я бы посоветовал вам использовать TAKE, чтобы получить первый item:
var_QUERY_linq.Take(1).FirstOrDefault()
* По возможности всегда используйте профилировщик sql для проверки запроса, отправляемого на сервер SQL.
.First () примет только первое или .Single () примет первое и вызовет исключение, если их больше