我的疑问:
public List<Book> GetAllBook()
{
return (from c in this.LDEntities.Book
select new
{
c.IdBook,
c.NameBook,
c.Athour
}).ToList();
}
错误:
无法将类型'AnonymousType#1'隐式转换为'System.Collections.Generic.List
什么是正确的代码?
答案 0 :(得分:7)
试试这个:
public List<Book> GetAllBook() {
var q = (from c in this.LDEntities.Book
select new Book()
{
IdBook = c.IdBook,
NameBook = c.NameBook,
Athour = c.Athour }).ToList();
return (q);
}
换句话说,创建一个Book类型的集合,而不是匿名类型的集合。
答案 1 :(得分:3)
您没有转换为Book
个实例。你需要做这样的事情:
from c in LDEntities.Book
select new Book { /* Your Properties to Set */ }
您尝试做的是返回一个匿名对象作为返回类型。所以它试图将List<a'>
转换为List<Book>
,两者之间没有任何关系。
如果只想返回匿名对象,则需要抽象逻辑并使方法通用:
public List<T> GetAllBook<T>(Func<Book, T> transformer)
{
return LDEntities.Book.Select(transformer).ToList();
}
然后你可以像这样调用代码:
var myObjects = GetAllBook(x => new { c.IdBook, c.NameBook, c.Athour });
答案 2 :(得分:0)
我猜它是
public List<Book> GetAllBook()
{
var q = (from c in this.LDEntities.Book
select c).ToList();
return (q);
}
如果LDEntities.Book是Book-objects