用LINQ从10个字段中选择3个字段

本文关键字:字段 3个 选择 10个 LINQ | 更新日期: 2023-09-27 18:06:24

my query:

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"

正确的代码是什么?

更新:我在分层架构中使用实体框架

用LINQ从10个字段中选择3个字段

试试这个:

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类型的集合,而不是一个匿名类型的集合。

您没有转换到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 });

我猜是

public List<Book> GetAllBook()
{
    var q = (from c in this.LDEntities.Book
             select c).ToList();
    return (q);
}
如果LDEntities