LINQ 查询不会加载到数据网格中

本文关键字:数据 数据网 网格 加载 查询 LINQ | 更新日期: 2023-09-27 18:36:25

我想将XML加载到DataGridView中,并将从datagridview到XML文件(CRUD)的更改相关联。我已经尝试了各种方法,我试图找到最好的方法,我已经让XML正确加载和显示,并通过循环访问整个DataGridView并创建一个新的XML文档来保存更改,但这需要大量处理。如何以更简单的方式执行此操作?我正在考虑将 XML 文件加载到 XDocument 中的内存中,并在Edit_EventHandler上操作来自 DataGridView 的更改,这样当我想要保存更改时,我就不必再次解析整个 GridView。我尝试使用 LINQ,但查询未加载到 DataGridView 中:

string path = @"D:'WorkData'users.xml";
xmlDoc = XDocument.Load(path);
var q = from item in xmlDoc.Descendants("client")
        select new
        {
            Name = item.Element("ID").Value,
            Mail = item.Element("email").Value
        };
dataGridView1.DataSource = q.ToList();

和 XML:

<?xml version='1.0'?>
<clients>
  <client ID='0000100000' email='email0@mail.com'/>
  <client ID='0000100001' email='email1@mail.com'/> 
</clients>

LINQ 查询不会加载到数据网格中

您尝试访问的是属性而不是元素。您的查询可能会引发异常,至少它没有返回任何结果,为什么您在GridView中看不到任何内容。使用以下查询获取Attribute值。

var q = from item in xmlDoc.Descendants("client")
        select new
        {
            Name = item.Attribute("ID").Value,
            Mail = item.Attribute("email").Value
        };

Id 和电子邮件是属性而不是元素!

var q = from item in xmlDoc.Descendants("client")
        select new
        {
            Name = item.Attribute("ID").Value,
            Mail = item.Attribute("email").Value
        };