0

这是我的代码:

DataSet ds = new DataSet();
ds.ReadXml("drivers");

这是正常的代码:

var q = from drivers in ds.Tables[0]
        .Select("EmployeeNumber = " + "0000008823")
        select (drivers["EmployeeNumber"] + " - " + drivers["Name"]);

相同的代码,但此代码给出了错误:

var q = from drivers in ds.Tables[0]
        .Select("EmployeeNumber = " + "0000000023")
        select (drivers["EmployeeNumber"] + " - " + drivers["Name"]);

无法对 System.String 和 System.Int32 执行“=”操作

这是我的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
  <drivers>
    <Driver>
      <Name>John</Name>
      <EmployeeNumber>0000000023</EmployeeNumber>
    </Driver>
    <Driver>
      <Name>Mike</Name>
      <EmployeeNumber>0000008823</EmployeeNumber>
    </Driver>
</drivers>
4

2 回答 2

1

您如何看待进入 Linq to Dataset 的方式?

var q2 = from drivers in ds.Tables[0].AsEnumerable()
         where drivers.Field<string>("EmployeeNumber") == "0000000023"
         select (drivers["EmployeeNumber"] + " - " + drivers["Name"]);

额外的好处是,如果您使用标准的“where”而不是数据表的 Select() 方法过滤行,您可以轻松地移至 Linq2Sql 或 Linq2EF。

于 2013-03-01T08:10:09.873 回答
1

我的解决方案是这样

var q = from drivers in ds.Tables[0]
        .Select("EmployeeNumber = '" + employeeNumber + "'")
        select (drivers["EmployeeNumber"] + " - " + drivers["Name"]);

但我不知道为什么我之前得到了那个错误

于 2013-03-01T07:30:46.623 回答