Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“Linq First()引发异常”;序列不包含任何元素”;而LongCount()给出1_C#_Linq_Exception_Datatable - Fatal编程技术网

C# C“Linq First()引发异常”;序列不包含任何元素”;而LongCount()给出1

C# C“Linq First()引发异常”;序列不包含任何元素”;而LongCount()给出1,c#,linq,exception,datatable,C#,Linq,Exception,Datatable,我有一个私有的DataTable变量dt,它正好包含一行 // In debug session in the immediate window: dt.Rows.Count // shows 1 ; dt.Rows[0]["uid"] // shows "IDxxx" 我觉得一切都很好。在代码中,下一行总是给我上面提到的异常序列不包含任何元素 var urow_ = usr_dt.AsEnumerable(); var urow = urow_.First<DataRow>(x

我有一个私有的
DataTable
变量
dt
,它正好包含一行

// In debug session in the immediate window:
dt.Rows.Count
// shows 1 ;
dt.Rows[0]["uid"]
// shows "IDxxx"
我觉得一切都很好。在代码中,下一行总是给我上面提到的异常<代码>序列不包含任何元素

var urow_ = usr_dt.AsEnumerable();
var urow = urow_.First<DataRow>(x => x["uid"] == uid);
我是C#的新手。你知道这种情况是怎么回事吗

编辑: 以防任何新来C#的人和我一样困惑

而下面评论中善意提供的链接建议


你正在做一个有条件的
First()
,而不是没有条件的
LongCount()
。。。唯一存在的元素可能是
x=>x[“uid”]**!=**uid
@xantatos,文档给我的印象是,此错误是针对空源而产生的,而不是空结果?我想我会得到类似于null的东西…不是真的,请参见:“InvalidOperationException:没有元素满足谓词中的条件。-或者-源序列为空。”
FirstOrDefault
将为您提供null,
First
将在没有元素的情况下引发异常。First获得源代码null异常ArgumentNullException,和空原点异常InvalidOperationException。在您的情况下,FirstOrDefault可能是更好的选择
urow_.LongCount()
// I get 1.
Exceptions                | Exception   Condition
ArgumentNullException     | source is null.
InvalidOperationException | The source sequence is empty.
ArgumentNullException     | source or predicate is null.
InvalidOperationException | No element satisfies the condition in predicate.
                          |  -or-
                          | The source sequence is empty.