FirstOrDefault有两种方式

时间:2013-04-02 05:10:48

标签: c# linq entity-framework linq-to-entities

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

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

2 个答案:

答案 0 :(得分: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);

请勿将其与查询语法混合使用。

答案 1 :(得分:3)

它是一样的。第一个版本是带有推断通用参数的FirstOrDefault。