Linq 表达式到泛型 - 如何

本文关键字:如何 泛型 表达式 Linq | 更新日期: 2023-09-27 18:36:12

我想将其转换为泛型类型:

using System.Linq.Expression
using System.Collections.Generic
public IQueryable<T> AllIncluding(
                          params Expression<Func<T, object>>[] includeProperties)
{
    IQueryable<T> query = All;
    foreach (var includeProperty in includeProperties)
    {
        // query = query.Include(includeProperty);
    }
    return query;
}

但它似乎不起作用,我该怎么做?

Linq 表达式到泛型 - 如何

Include 方法仅在DbQuery<T>上可用,因此您必须使用直接强制转换或as操作数或使用方法 DbExtensions 强制转换为查询。

public IQueryable<T> AllIncluding(
    params Expression<Func<T, object>>[] includeProperties)
{
    IQueryable<T> query = All as DbQuery<T>;
    if (query == null)
    {
       return All;
    }
    foreach (var includeProperty in includeProperties)
    {
        // query = query.Include(includeProperty);
    }
    return query;
}

添加一个用于System.Data.Entity ;

实体框架 4.1 包括 Include 的强类型版本:http://msdn.microsoft.com/en-us/library/gg671236(VS.103).aspx

这是一种扩展方法。