将 WPF Datagrid 中的数据检索到 List 中的列数不同

Posted

技术标签:

【中文标题】将 WPF Datagrid 中的数据检索到 List 中的列数不同【英文标题】:Retrieving data from WPF Datagrid into a List does not have the same number of columns 【发布时间】:2020-11-07 05:40:30 【问题描述】:

我有一个问题,虽然我在这里搜索了很多但没有答案。 我有2节课

class adminApp

   public int Id  get; set; 
   public string Email  get; set; 
   public string Password  get; set; 
   public string FullName  get; set; 
   public Nullable<System.DateTime> StartFrom  get; set; 
   public string LicenseKey  get; set; 
   public bool Checked  get; set; 


class User

   public int Id  get; set; 
   public string FullName  get; set; 
   public string Email  get; set; 
   public Nullable<System.DateTime> StartFrom  get; set; 

我正在使用 Web API 从 MSSQL 获取并在加载到 Gridview 后推送到 adminApp 类。我编写了一个更新函数,只需将 ID、FullName、Email、StratFrom 发送到 API。我尝试编写一个 Linq 从 Gridview 获取数据,但它仍然为空。请帮我更正我的代码:

List<User> list = dgvList.Items
                         .OfType<User>()
                         .Where(x => x.Checked == true)
                         .ToList();

【问题讨论】:

你说你正在加载adminApps,而不是Users 那你为什么要拉Users? 是的,我想将“PUT”发送到我的 API 以进行更新。我只接受编辑姓名、电子邮件、开始。我不想将所有数据发送到服务器,因为安全或只是想最小化发送的数据 【参考方案1】:

您的问题缺乏足够的上下文来确定,但如果您的网格中充满了addminApps,那么您不能直接退出User。试试这个,它会投影到User 的列表中:

List<User> list = dgvList.Items
                 .OfType<adminApp>()
                 .Where(x => x.Checked == true)
                 .Select(a => new User 
                     Id = a.Id, 
                     FullName = a.FullName, 
                     Email = a.Email, 
                     StartFrom = a.StartFrom )
                 .ToList();

【讨论】:

以上是关于将 WPF Datagrid 中的数据检索到 List 中的列数不同的主要内容,如果未能解决你的问题,请参考以下文章

如何将 DataGrid 中的文本框绑定到 Wpf 中的列表?

将wpf datagrid导出为自定义Excel CSV文件

SqlDataReader 在尝试将数据加载到 DataGrid WPF 时抛出异常

将按钮绑定到 DataGrid WPF 中的对象

使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

将内部datagrid数据与外部datagrid wpf绑定