zoukankan      html  css  js  c++  java
  • Linq 使用Startswith 出现空引用的问题

    一、问题

          我使用的是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;
            }
     

    执行结果

    image

    三、解决方法

    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();
                
            }

    输出结果

    image

    四、原因

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

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

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

  • 相关阅读:
    List,Set,Map初级学习
    String,StringBuffer,StringBuilder 的使用
    activity跳转
    JSON与List之间的转换
    子线程更新UI
    数据库查询关键字显示所有结果
    Java数据类型转换1
    git 操作
    MySql导出表结构
    springBoot双数据源配置
  • 原文地址:https://www.cnblogs.com/getpower/p/5782867.html
Copyright © 2011-2022 走看看