LINQ to Dataset不再识别“Field <string>”关键字</string>

时间:2011-11-10 11:39:46

标签: c# linq-to-dataset

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

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字段绝对是DataSet中的字符串。

1 个答案:

答案 0 :(得分:3)

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

缺少的方法实际上是extension methods

同样改变:

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()(你拥有它)没有按照你的想法行事。