使用Linq搜索表格XML,是否可以完成?

时间:2009-12-02 12:45:45

标签: sql xml linq

我有一个包含事务的数据库表。在其中一个字段中有一条XML消息,字段类型为“xml”。在这个XML中,有一个员工提交,我需要搜索这个字段。我想检索与运行时提供的员工编号匹配的所有行。是否可以使用Linq执行此操作?

这里显示的是事务表中其中一行的一些示例XML。该字段称为“消息”。我需要查看“employee”值,如果它与用户提供的行匹配,则返回该行。

<interface>
  <mac>1452345234</mac>
  <device>device1</device>
  <id>1234567</id>
  <terminal>
    <unit>1</unit>
    <trans>
      <event>A3</event>
      <employee>3333</employee>
      <time>2008-10-02T11:41:00.0000000+00:00</time>
    </trans>
  </terminal>
</interface>

2 个答案:

答案 0 :(得分:1)

是的,LINQ很容易实现:

var matchList = from t in transactions
                where XDocument.Load (new StringReader (t.Message))
                               .Descendants ("employee")
                               .Count (node => node.Value == employeeNr) > 0
                select t;

答案 1 :(得分:0)

简单方法:

List<YourRecord> GetRecords(string EmployeeId)
{
    return TheTable.where(r => r.Message.Contains("<employee>" + empId + "</employee>")).ToList();
}