我有以下服务方法 -DataTable或IList?哪个更好?
public static DataTable GetBookDetails(BookEntities context)
{
DataTable dtBooks= new DataTable();
dtBooks.TableName = "BookDetails";
dtBooks.Columns.Add(new DataColumn("Name",typeof(string)));
dtBooks.Columns.Add(new DataColumn("ISBN",typeof(string)));
dtBooks.Columns.Add(new DataColumn("Price",typeof(int)));
dtBooks.Columns.Add(new DataColumn("Author",typeof(string)));
IQueryable<Book> query = from b in context.Books.Include("Authors")
.Include("Details/Price")
.Include("Activity")
where b.Activity.IsActive
select b;
if (query != null)
{
var sorted = query.ToArray().OrderByDescending(b => b.Activity.DateCreated);
foreach (Book bb in sorted)
{
DataRow row = dtBooks.NewRow();
row["Name"] = bb.Name;
row["ISBN"] = bb.ISBN;
row["Price"] = bb.Details.Price.CostOfBook;
row["Author"] = bb.Authors.Name;
dtBooks.Rows.Add(row);
}
}
else
dtBooks= null;
return dtBooks;
}
我的问题是 -
- 这是一个有效的方式来获得细节还是可以改善这种方法?
- 有人建议我使用IList而不是DataTable。我应该使用这个吗?如果是这样,有什么优势?
- 使用DataTable有什么问题?
难道你没有一个可以使用的相关的Book类吗? – V4Vendetta
检查这个http://stackoverflow.com/questions/896238/datatables-vs-ienumerablet –
@RTRokzzz你如何使用Inculde()。如果它是扩展方法,你可以分享它的代码。 –