linq to xml查询绑定GridView

 private void textEdit1_KeyDown(object sender, KeyEventArgs e)
        {
            string path = Application.StartupPath + "\\" + this.textEdit2.Text.Trim();
            if (e.KeyCode == Keys.Enter)
            {
                if (!File.Exists(path))
                {
                    XtraMessageBox.Show("未找相应的文件", "提示信息", 
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                    XElement xele = XElement.Load(path);

                    /*var query = from toolbox in xele.Elements()
                                select toolbox;

                    var query1 = from table in query
                                 where table.Value.Contains(this.textEdit1.Text.Trim())
                                      || table.Value.Contains(this.textEdit1.Text.Trim())
                                 select table;*/

                    IEnumerable<XElement> query1 =
                                                from table in xele.Nodes().OfType<XElement>()
                                                where table.Value.Contains(this.textEdit1.Text.Trim())
                                                select table; 
                    using (DataTable dt = new DataTable())
                    {
                        DataColumn dc = null;
                        DataRow newRow;
                        //dt.Columns.Clear();
                        //dt.Rows.Clear();
                        dt.Clear();
                        foreach (XElement item in query1.Nodes())
                        {
                            String columns = item.Name.ToString();
                            if (!dt.Columns.Contains(columns))
                            {
                                //XAttribute alias = item.Attribute(columns);
                                dc = dt.Columns.Add(columns, Type.GetType("System.String"));
                            }
                        }

                        foreach (XElement item in query1)
                        {
                            newRow = dt.NewRow();
                            for (int i = 0; i < dt.Columns.Count; i++)
                            {
                                String col = dt.Columns[i].ToString();
                                newRow[col] = item.Element(col).Value;
                            }
                            dt.Rows.Add(newRow);
                        }

                        this.grvlist.Columns.Clear();
                        this.grvlist.KeyDown -= grvlist_KeyDown; 
                        if (dt.Rows.Count > 0)
                        {
                            gclist.DataSource = dt;
                            this.grvlist.Focus();
                            this.grvlist.KeyDown += grvlist_KeyDown;
                        }
                        else
                        {
                            gclist.DataSource = null;
                        }
                    } 
            }
        }

  

原文地址:https://www.cnblogs.com/freexiaoyu/p/2669968.html