我在数据集中有一些数据,我通常会选择一条记录,如下所示。
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中的字符串。
答案 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()(你拥有它)没有按照你的想法行事。