LINQ to SQL: если база данных не возвращает значений, Count () генерирует исключение - PullRequest
1 голос
/ 08 января 2010

У меня есть оператор linq to sql, который возвращает набор сведений о клиенте объекту клиента

var customers = from .....

Затем я использую

if(customers.Count() > 0)
{
    return customers.First();
}
else
{
    return null;
}

, но customer.Count () выбрасывает

'customers.Count()' threw an exception of type 'System.NotSupportedException'   int {System.NotSupportedException}

как еще я могу проверить, не было ли ничего возвращено ???

=============

Вот чтопроблема была.На самом деле это была проблема в моем операторе LINQ, который я делал

У меня есть функция

bool TrimAndCompare(string s1, string s2)
{
   return customer.CustomerID.Trim() == customerID.Trim()
}

var customers = from customer in _context.Customers
                          where
                                TrimAndCompare(customer.CustomerID, customerID)
                          select customer;

Когда я делал это, все хорошо

var customers = from customer in _context.Customers
                          where
                                customer.CustomerID.Trim() == customerID.Trim()
                          select customer;

Думаю, вы не можете повторно использовать функции в операторе LINQ, тогда

1 Ответ

6 голосов
/ 08 января 2010

Нельзя использовать методы, не имеющие эквивалента в SQL, в выражении Linq-To-SQL.


Для проверки результатов не используйте Count и First , так как это выполнит SQL-запрос дважды.
Вместо этого используйте FirstOrDefault :

return customers.FirstOrDefault();

FirstOrDefault возвращает первый элемент или null , если элементы не были найдены:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...