LINQ - 不同的语法风格,不同的结果?

Per*_*mas 8 c# linq

有人可以告诉我以下两个LINQ语句的区别吗?

var ChkUnique = DB.BusinessFile.FirstOrDefault(c => c.ROCNo == txtBoxID.Text);
Run Code Online (Sandbox Code Playgroud)

var ChkUnique = from c in DB.BusinessFile 
                where c.ROCNo == (string)txtBoxID.Text 
                select c;
Run Code Online (Sandbox Code Playgroud)

ChkUnique != nullfalse当找不到匹配时返回顶部的那个,true对于后者,我无法弄清楚为什么会发生这种情况.

我是LINQ的新手,所以我可能错过了一些非常基本的东西但是它让我疯狂.

And*_*ber 10

第二个代码返回一个表示您正在调用的查询的对象; 它永远不会是空的.虽然一旦枚举,它可能是一个空集合.(但仍然不是空的)

您的第一个是调用FirstOrDefault,它将单个结果强制转换为单个变量,如果没有结果则返回null.如果你做Where的不是FirstOrDefault,你将有同样的结果两次.