3

我无法理解这两种设置 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>();

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

4

2 回答 2

9
where r.IDPROD.Equals(10) select r).FirstOrDefault();

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

where s.IDPROD == 10 select s).FirstOrDefault<Products>()

改为使用运算符==重载。结果强行转换为Products.


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

Product p = _context.Products.FirstOrDefault(p => p.IDPROD == 10);

不要将它与查询语法混合。

于 2013-04-02T05:15:41.293 回答
3

这是相同的。第一个版本是带有推断通用参数的 FirstOrDefault。

于 2013-04-02T05:14:37.123 回答