为什么这个Linq to sql函数返回null?

时间:2009-09-30 02:18:19

标签: linq-to-sql

我是linq to sql的新手

我写了这个函数:

public ICollection<ICustomer> GetAll()
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    var customers = from customer in context.Customers select customer;
    return customers.ToList().Cast<ICustomer>().ToList();
}

但它总是返回空值列表。

数据库包含3个“填充数据”的记录,但此函数返回3个空值。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

可能无法正确转换结果,您是否已将部分Customer对象实现为ICustomer?如果没有,那就是原因。

此外,您不必将它带到列表两次,或者甚至一次,因为您没有返回列表,根据您的使用情况,将签名更改为List或IEnumerable可能更合适。

您可以通过简单的测试来测试演员表是否成功。

DataClasses1DataContext context = new DataClasses1DataContext();
var customers = from customer in context.Customers select customer;
int numberOfCustomers  = customers.Count();
var myCustomers = customers.Cast<ICustomer>(); //you could also do .OfType<ICustomer>();
int numberOfICustomers = myCustomers.Count();

如果numberOfCustomers为3且numberOfICustomers为0,那么您就知道这是问题所在。

答案 1 :(得分:1)

您的问题几乎可以肯定是.Cast()方法(通过单步执行代码并确保正确填充客户来确认)。

Customer对象是否实现了ICustomer接口?这听起来很明显,但这可能是一个问题。