LINQ to SQL:如果数据库没有返回值,则Count()会抛出异常

时间:2010-01-08 04:49:57

标签: c# .net linq-to-sql null

我有一个linq to sql语句,它将一组Customer详细信息返回给客户对象

var customers = from .....

然后我用

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

但是customers.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 个答案:

答案 0 :(得分:6)

在Linq-To-SQL表达式中,不能使用SQL中没有等效的方法。


为了测试结果,请不要使用 Count First ,因为这会执行两次SQL查询。
而是使用 FirstOrDefault

return customers.FirstOrDefault();

FirstOrDefault返回第一个元素,如果没有找到元素,则返回 null