LINQ到数据集不再识别“字段<字符串>"”关键字

本文关键字:quot 关键字 字符串 数据集 不再 识别 字段 LINQ | 更新日期: 2023-09-27 18:14:08

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

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:操作符'=='不能应用于类型的操作数'string'和'char'

…但是"TechKey"字段在数据集中绝对是一个字符串。

LINQ到数据集不再识别“字段<字符串>"”关键字

您可能需要添加对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()(你有它的地方)没有做你想的那样。