0

我在数据集中有一些数据,我通常会选择如下所示的记录。

SnapshotDS.SnapshotRow[] previousRow = 
    m_PreviousSnapshot.Snapshot.Select(string.Format("TechKey = '{0}'", ChangeRow.TechKey)) 
        as SnapshotDS.SnapshotRow[];

ChangeRow.Prev_Staff_No = previousRow[0].Staff_No;

要在 LINQ 中执行相同的操作,我希望执行以下操作,但我在Field关键字下得到一条摆动线。

var pRow = from p in m_PreviousSnapshot.Snapshot.AsEnumerable()
            where p.Field<string>("TechKey") == ChangeRow.TechKey
            .Single()
            select p;

ChangeRow.Prev_Staff_No = p.Staff_No;

我以前多次使用过类似的 LINQ,从来没有遇到过这个问题。

有什么建议么?

编辑

我得到的编译器错误是:

错误 CS0019:运算符“==”不能应用于“字符串”和“字符”类型的操作数

...但是“TechKey 字段绝对是 DataSet 中的字符串。

4

1 回答 1

3

您可能需要添加对System.Data.DataSetExtensions.dll的引用。

缺少的方法实际上是扩展方法

也改变:

var pRow = from p in m_PreviousSnapshot.Snapshot.AsEnumerable()
        where p.Field<string>("TechKey") == ChangeRow.TechKey
        .Single()
        select p;

到:

var pRows = from p in m_PreviousSnapshot.Snapshot.AsEnumerable()
        where p.Field<string>("TechKey") == ChangeRow.TechKey
        select p;
var pRow = pRows.Single();

.Single() (你有它的地方)没有按照你的想法做。

于 2011-11-10T11:42:08.083 回答