使用 LINQ to SQL 将对象从数据库添加到列表
Add objects from database to a List, using LINQ to SQL
我有一个 table books
,我想将其所有内容放入一个 List<book>
(现在我被困在添加单个元素上)。
我试过了
public class DataContext
{
LINQtoSQLDataContext db = new LINQtoSQLDataContext();
List<book> books = new List<book>();
public List<book> addBook()
{
books.Add((book)from book in db.books where book.bookID == 1 select book);
return books;
}
}
但是当我尝试将它设置为我的 wpf dataGrid 的源时,它抛出一个错误:
Unable to cast object of type 'System.Data.Linq.DataQuery`1[DataLayer.book]' to type 'DataLayer.book'.
所以问题是,我如何正确地将数据从数据库转换为列表?
只是return书单如下:
public List<book> addBook()
{
return (from book in db.books
where book.bookID == 1
select book)
.ToList();
}
将方法命名为 addBook
很奇怪,因为该方法的结果是 return 一本书列表。
将其命名为:public List<book> GetBooks()
同时 List<T>.Add(T)
Method only allow to add single item to list, to add multiple items into list, you need List<T>.AddRange(IEnumerable<T>)
Method.
如果我正确理解你的问题,解决方案比预期的要简单,请尝试像这样创建一个 where 条件:
public class DataContext
{
LINQtoSQLDataContext db = new LINQtoSQLDataContext();
List<book> books = new List<book>();
public List<book> addBook()
{
books = db.book.Where(x => x.bookId == 1).ToList();
return books;
}
}
正如 sr28 指出的那样,这将 return 一个数组。您可以将数组添加到 books
列表中。我个人更喜欢使用方法语法。
我真的不明白你为什么要把这本书添加到这个列表中。但是给你。因为你已经定义了 books
你不需要 return 它,你可以简单地添加 book
到 books
.
public void AddBook()
{
var book = db.books.FirstOrDefault(b => b.BookId == 1);
books.add(book);
}
我有一个 table books
,我想将其所有内容放入一个 List<book>
(现在我被困在添加单个元素上)。
我试过了
public class DataContext
{
LINQtoSQLDataContext db = new LINQtoSQLDataContext();
List<book> books = new List<book>();
public List<book> addBook()
{
books.Add((book)from book in db.books where book.bookID == 1 select book);
return books;
}
}
但是当我尝试将它设置为我的 wpf dataGrid 的源时,它抛出一个错误:
Unable to cast object of type 'System.Data.Linq.DataQuery`1[DataLayer.book]' to type 'DataLayer.book'.
所以问题是,我如何正确地将数据从数据库转换为列表?
只是return书单如下:
public List<book> addBook()
{
return (from book in db.books
where book.bookID == 1
select book)
.ToList();
}
将方法命名为 addBook
很奇怪,因为该方法的结果是 return 一本书列表。
将其命名为:public List<book> GetBooks()
同时 List<T>.Add(T)
Method only allow to add single item to list, to add multiple items into list, you need List<T>.AddRange(IEnumerable<T>)
Method.
如果我正确理解你的问题,解决方案比预期的要简单,请尝试像这样创建一个 where 条件:
public class DataContext
{
LINQtoSQLDataContext db = new LINQtoSQLDataContext();
List<book> books = new List<book>();
public List<book> addBook()
{
books = db.book.Where(x => x.bookId == 1).ToList();
return books;
}
}
正如 sr28 指出的那样,这将 return 一个数组。您可以将数组添加到 books
列表中。我个人更喜欢使用方法语法。
我真的不明白你为什么要把这本书添加到这个列表中。但是给你。因为你已经定义了 books
你不需要 return 它,你可以简单地添加 book
到 books
.
public void AddBook()
{
var book = db.books.FirstOrDefault(b => b.BookId == 1);
books.add(book);
}