FirstOrDefault有两种方式

use*_*358 3 c# linq linq-to-entities entity-framework

我无法理解设置FirstOrDefault的这两种方式之间的区别:

Product a = (from r in _context.Products where r.IDPROD.Equals(10) select r).FirstOrDefault();
Product a = (from s in _context.Products where s.IDPROD == 10 select s).FirstOrDefault<Products>();
Run Code Online (Sandbox Code Playgroud)

有人可以用简单的方式解释我吗?

aba*_*hev 9

where r.IDPROD.Equals(10) select r).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

方法Int32.Equals()使用.然后编译器自动检测到FirstOrdefault<T>哪里T(它将是类型r).

where s.IDPROD == 10 select s).FirstOrDefault<Products>()
Run Code Online (Sandbox Code Playgroud)

==而是使用运算符重载.结果强行投入Products.


我会用扩展方法语法写这个:

Product p = _context.Products.FirstOrDefault(p => p.IDPROD == 10);
Run Code Online (Sandbox Code Playgroud)

不要将它与查询语法混合使用.