我有以下代码:
private void SelectRowData(int wire, int bond, string svid)
{
var results = from myRow in PPLoadedData.AsEnumerable()
where
myRow.Field<Int32>("Wires.OperationOrder") == wire &&
myRow.Field<Int32>("Bonds.OperationOrder") == bond
select myRow[svid];
}
Run Code Online (Sandbox Code Playgroud)
我可以看到,当我调试时,结果确实有我期望的单个字符串项.但是,我无法通过我所知的任何方式索引或迭代数据.
我正在寻找的是我可以访问数据的东西.
以下是调试器所说的内容:
名称:( new System.Linq.SystemCore_EnumerableDebugView(results)).Items [0]
价值:700.0
输入:object {double}
PPLoadedData
是一个DataTable
.
提前致谢.
Eri*_*ert 13
澄清杰森的答案:
FirstOrDefault()
.First()
.SingleOrDefault()
.Single()
.如果使用适当的方法,则在违反不变量时会出现异常,这将有助于您调试程序.
如果您希望查询产生单个项目,则应使用如下SingleOrDefault
方法:
var result = (from myRow in PPLoadedData.AsEnumerable()
where myRow.Field<Int32>("Wires.OperationOrder") == wire &&
myRow.Field<Int32>("Bonds.OperationOrder") == bond
select myRow[svid]).SingleOrDefault();
if(result != null)
// Do stuff with result
Run Code Online (Sandbox Code Playgroud)
通常,Linq查询返回IEnumerables,您必须迭代它,而不是通过索引访问.但是,在您只需要单个值的情况下,有几种方法可以获得所需的值.有关详细信息,请查看MSDN上的System.Linq.Enumerable.
编辑:请务必阅读Eric的答案,该答案说明何时使用哪种方法获得单独的结果.
归档时间: |
|
查看次数: |
4296 次 |
最近记录: |