如何将var转换为数据表



我有以下功能-

public static DataTable getDetails(PersonContext context)
{
DataTable dt = new DataTable();
IQueryable<Person> query = from p in context.Persons.Include("Employee")
                                                    .Include("Manager")
                                                    .Include("Activity")
                           where p.Activity.IsActive
                           select p;
var sorted = query.ToArray().OrderByDescending(p=>p.Activity.DateCreated);
dt = (DataTable)sorted;
return dt;
}

我不能测试它。我的问题是,这个函数是否有效。如果没有,我应该做什么改变?

public static DataTable getDetails(PersonContext context)
{
DataTable dt = new DataTable("Details");
dt.Columns.Add("Name");
dt.Columns.Add("Department");
dt.Columns.Add("IsManager");
IQueryable<Person> query = from p in context.Persons.Include("Employee")
                                                    .Include("Manager")
                                                    .Include("Activity")
                           where p.Activity.IsActive
                           select p;
var sorted = query.ToArray().OrderByDescending(p=>p.Activity.DateCreated);
foreach(Person p in sorted)
{
    dt.Rows.Add(p.Name, p.Employee.Department,p.Manager.IsManager);
}
    return dt;
}
dt = (DataTable)sorted;

是无效的强制转换。正确的方法是使用
将返回的数组添加到dt中。dt.Rows.Add(query.ToArray().OrderByDescending(p=>p.Activity.DateCreated).toArray()); .
您可以在添加数据到数据表

中找到更多信息

orderbydescent()返回一个IEnumerable而不是DataTable

这个链接似乎回答了同样的问题。

如果OrderByDescending 的返回类型为 DataTable,则不需要强制转换。编译器在编译时知道方法的返回类型。

但是OrderByDescending不返回DataTable,你需要构造它

相关内容

  • 没有找到相关文章

最新更新