C# 向IQueryable添加一个Include扩展方法

using System;
using System.Data.Objects;
using System.Linq;

namespace OutOfMemory.Codes
{
    /// <summary>
    /// Adds extension methods to the <see cref="IQueryable{T}"/> class.
    /// </summary>
    public static class QueryableExtender
    {
        /// <summary>
        /// Specifies the related objects to include in the query results.
        /// </summary>
        /// <typeparam name="T"><see cref="Type"/> of query to extend.</typeparam>
        /// <param name="this">The query to extend.</param>
        /// <param name="path">
        /// Dot-separated list of related objects to return in the query results.
        /// </param>
        /// <returns>
        /// A new <see cref="IQueryable{T}"/> with the defined query path.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// The parameter <paramref name="path"/> is null.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// The parameter <paramref name="path"/> is empty.
        /// </exception>
        public static IQueryable<T> Include<T>(this IQueryable<T> @this, string path)
        {
            var objectQuery = @this as ObjectQuery<T>;

            if (objectQuery != null)
            {
                return objectQuery.Include(path);
            }
            return @this;
        }
    }
}

DbExtensions.Include<T> Method (IQueryable<T>, String)

https://msdn.microsoft.com/en-us/library/system.data.entity.dbextensions.include

Namespace:  System.Data.Entity
Assembly:  EntityFramework (in EntityFramework.dll)

时间: 2024-10-08 21:21:16

C# 向IQueryable添加一个Include扩展方法的相关文章

给 string 添加一个 GetInputStream 扩展方法

有时候,我们须要读取一些数据,而无论这数据来源于磁盘上的数据文件,还是来源于网络上的数据.于是.就有了以下的 StringExtensions.cs: 1 using System; 2 using System.IO; 3 using System.Net; 4 5 namespace Skyiv 6 { 7 public static class StringExtensions 8 { 9 public static Stream GetInputStream(this string fi

添加一个js扩展方法

String.prototype.repeatify=String.prototype.repeatify || function(times){ var str=''; for(var i=0;i<times;i++){ console.log('this',this) // this指向调用这个函数的对象 str+=this; } return str} 'hello'.repeatify(3)======>'hellohellohello' 原文地址:https://www.cnblog

给IConfiguration写一个GetAppSetting扩展方法

给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等. 在 .net core 中有一个 GetConnectionString 的扩展方法用来比较方便的获取链接字符串,类似于在 .net framework 中使用 ConfigurationManager.Connec

为对象添加一个新的方法

例定义一个方法,为Date对象添加一个新的成员方法,转换为形如 y-m-d<br>h:m:s Date.prototype.stringify = function(){ var s= this.getFullYear()+'-'; s+= (this.getMonth()+1)+'-'; s+= this.getDate()+' '; s+= this.getHours()+':'; s+= this.getMinutes()+':'; s+= this.getSeconds(); retu

为Array对象添加一个去重的方法(ES5和ES6的实现)

输入一个例子 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq() 需要输出 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a'] 分析 题目要求给Array添加方法,所以我们需要用到prototype,数组去重本身算法不是很难,但是在Javascript中很多人会忽视NaN的存在,因为JS中NaN != NaN 在不考虑NaN的情况下我是使用inde

Qt applendPlainText()/append() 多添加一个换行解决方法

void ConsoleDialog::appendMessageToEditor(const QString &message) { ui->textEdit->appendPlainText(message); ui->textEdit->moveCursor(QTextCursor::End); ui->textEdit->textCursor().deletePreviousChar(); } 每次append后,光标移到最后,删除前一个字符,即换行符.

在一个div的右下角再添加一个div的方法

想完成如下效果: 代码如下: <div id="header"> <div id="logo"> </div> <div id="note"> <p>右下角的内容</p> </div> </div> css代码: #header { height: 100px; width: 1600px; background-color: saddlebrown;

Entity Framework DbSet&lt;T&gt;之Include方法与IQueryable&lt;T&gt;扩展方法Include的使用

Entity Framework使用Code First方式时,实体之间已经配置好关系,根据实际情况某些情况下需要同时获取导航属性,比如获取商品的同时需要获取分类属性(导航属性),或者基于优化方面考虑等,下面来看一个例子 例子中有会员实体类(Member)与角色实体类(Role),Role与Member的关系是1:n,控制台应用程序代码如下: using System; using System.Collections.Generic; using System.Linq; using Syst

扩展方法(为那些已经写好不能修改源码的类添加方法)

参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-and-call-a-custom-extension-method 本主题介绍如何实现 .NET Framework 类库 中任意类型的扩展方法,或是你想要扩展的任何其他 .NET 类型. 客户端代码可以通过以下方法使用扩展方法,添加包含这些扩展方法的 DLL 的引用,以及添加 usin