我是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个空值。
如何解决这个问题?
答案 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接口?这听起来很明显,但这可能是一个问题。