zoukankan      html  css  js  c++  java
  • Linq技巧2——限制返回数据中的继承类型

      假如有像下面这样的一个模型,

          

      怎样在查询时仅仅需要的Cars呢?

      这样的几个继承关系的实体中,查询时Where 条件可以加入OfType<SubType>(),你可以这样来写:  

    var onlyCars = from car in ctx.Vehicles.OfType<Car>() 
                   select car;

      这样查询正常工作,很好!这样限制了Cars 类型,偶尔带出SportsCars and SUVs 这些子类型。

      怎样在查询时仅仅需要的Cars,且不包括那些子类呢?

      假如你预期仅仅查询一辆简单的家庭用车,这以为着你不想在查询中看见SportsCars and SUVs 这些子类型。

      现在为了避免查询那些子类型,就必须在查询中明确一下条件。  

    var onlyCars = from car in ctx.Vehicles.OfType<Car>() 
                   where !(car is SportsCar) && !(car is SUV) 
                   select car;

      现在查询出来的仅仅是Cars 了。

      号外

        很不幸的是这种方式,你必须清晰地找出所有你不想要的可能存在的子类型,难免会存在大量或者更深继承的子类。

      如果这种方式被支持,无疑是更优雅的方式(很不幸,它不被支持)。  

    var onlyCars = from car in ctx.Vehicles.OfType<Car>() 
                   where car.GetType() == typeof(Car) 
                   select car;

    出处: http://www.cnblogs.com/windy2008

  • 相关阅读:
    MapReduce Shuffle 和 Spark Shuffle 原理概述
    Kafka生产消费API JAVA实现
    Kylin引入Spark引擎
    CentOS 下安装 Cmake 步骤
    TP5 使用验证码功能
    连接树莓派中的MySQL服务器
    用 PHP 函数变量数组改变代码结构
    表的优化
    Wamp 下运行 CGI 笔记
    PHP 中的关于 trait 的简单
  • 原文地址:https://www.cnblogs.com/windy2008/p/3388264.html
Copyright © 2011-2022 走看看