一、问题

我使用的是Entity Fromwork CodeFirst来操作数据库,昨天在使用startswith查询数据的时候发现一个问题,就是经常一直报空引用的错误,查了很久才找到原因,这里做一个备注,也希望能帮助遇到同样问题的人。

二、描述

为了方便描述我写了一个简单控制台程序,代码如下:

static void Main(string[] args)
{
try
{
// QuoteDbContext db = new QuoteDbContext();
var query = GetProductList().Where(x => x.Country.StartsWith("ff"));
Console.WriteLine(query.Count());
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
} Console.ReadLine(); } private static IEnumerable<Product> GetProductList()
{
QuoteDbContext db = new QuoteDbContext();
return db.Products;
}
 

执行结果

三、解决方法

static void Main(string[] args)
{
try
{
QuoteDbContext db = new QuoteDbContext();
var query = db.Products.Where(x => x.Country.StartsWith("ff"));
Console.WriteLine(query.Count());
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
} Console.ReadLine(); }

输出结果

四、原因

通过上面的对比我们发现第一个例子中使用了GetProductList()方法并返回了一个IEnumerable<T>类型的数据,

而第二个例子没有。第一个例子报错是因为使用了List<T>或者IEnumerable<T>,这意味着,系统会默认使用

Linq to Objects,而我们实际使用的是Linq to sql,就会报错,所以我们在使用Linq to SQL 或者 Entity Framework的时候就不要使用第一个例子的方法啦 !

最新文章

  1. Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
  2. C++ Low level performance optimize 2
  3. IDisplayTransformation
  4. epoll函数与参数总结学习 &amp; errno的线程安全
  5. 2015GitWebRTC编译实录6
  6. css font-family 字体全介绍,\5b8b\4f53 宋体 随笔
  7. the behavior of the UICollectionViewFlowLayout is not defined because:
  8. WPF系列
  9. 某外企mono for android试题
  10. QQ空间API接口
  11. CentOS6.4x64安装mysql5.6.23(rpm)
  12. cocos2d-x lua 内存回收
  13. [bzoj1997][Hnoi2010]Planar(2-sat||括号序列)
  14. 2019年6月pmp考试马上开始!报考9月怎么进行中文报名?
  15. Fiddler之iOS手机抓包实战操作
  16. Lombok 安装、入门以及使用
  17. PHP中对象的深拷贝与浅拷贝
  18. ASP.NET MVC5高级编程 之 视图
  19. java读取按行txt文件
  20. systemd 之 journalctl

热门文章

  1. npm 是干什么的?(非教程)
  2. 【HDOJ6598】Harmonious Army(最小割)
  3. Django token 学前小知识
  4. http常见7种请求
  5. Cocos2d Box2D之动态刚体
  6. 构建一个简单的Spring Boot项目
  7. How To Release and/or Renew IP Addresses on Windows XP | 2000 | NT
  8. python基础篇(文件操作)
  9. css3中的scroll-behavior属性
  10. Redis缓存击穿、缓存穿透、缓存雪崩