Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 为什么这个Linq to sql函数返回空值?_Linq To Sql - Fatal编程技术网

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

Linq to sql 为什么这个Linq to sql函数返回空值?,linq-to-sql,Linq To Sql,我是sql新手 我写了这个函数: public ICollection<ICustomer> GetAll() { DataClasses1DataContext context = new DataClasses1DataContext(); var customers = from customer in context.Customers select customer; return customers.ToList().Cast<ICustom

我是sql新手

我写了这个函数:

public ICollection<ICustomer> GetAll()
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    var customers = from customer in context.Customers select customer;
    return customers.ToList().Cast<ICustomer>().ToList();
}
public ICollection GetAll()
{
DataClasses1DataContext上下文=新DataClasses1DataContext();
var customers=上下文中的客户。客户选择客户;
return customers.ToList().Cast().ToList();
}
但它总是返回空值列表

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


如何解决此问题?

可能无法正确转换结果,您是否已使部分
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();
DataClasses1DataContext=newdataclasses1datacontext();
var customers=上下文中的客户。客户选择客户;
int numberOfCustomers=customers.Count();
var myCustomers=customers.Cast()//您也可以这样做;
int numberoficcustomers=myCustomers.Count();

如果
numberOfCustomers
为3,而
numberoficcustomers
为0,则您知道这就是问题所在。

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


Customer对象是否实现ICCustomer接口?这听起来很明显需要检查,但这可能是个问题。

Re:
Cast()
我也犯了这个错误<代码>强制转换将在任何元素无法转换为目标类型时引发异常,而不是返回null。@Rex我真的希望它会引发异常,尽管我还没有对linq进行任何意外强制转换(如果您相信的话)。我不确定发生了什么,但希望在不同的过滤阶段仍然测试计数能为op提供一些帮助。
Cast
如果任何元素无法转换为目标类型,则会引发异常,因此op不会看到三个空值。问题发生在Cast中,因为在没有看到您的客户和ICustomer之前,一切都正常工作,我无法在这里进行测试和复制。函数内部是否为null,或者将返回值分配给另一个对象时是否为null?正如Rex指出的,强制转换没有引发异常,因此必须“成功”(从某种意义上讲)。请查看此问题以查看类标题:请显示
类客户的定义(第一行可以)。你可以在这个问题中看到定义和更多细节