分组到存储库EF C#中的泛型方法

时间:2017-03-27 23:56:25

标签: c#

我尝试使用通用方法进行分组,但是我尝试它的方式给出了以下错误:

  

方法&System; .Linq.Enumerable.OrderBy的类型参数    (System.Collections.Generic.IEnumerable,   System.Func)'无法从使用中推断出来。尝试   明确指定类型参数。

通过该方法删除组是正常的,我唯一缺乏的是让它可以分组。

target="/home/walia6/Math/fib"
os.execute("echo 1 > "..target)
os.execute("echo 1 >> "..target)
while true do
    local handle = io.popen("wc -l < "..target)
    ct = handle:read("*a")
    handle:close()
    os.execute("echo "..ct)

    tmp=("sed -n "..(ct-1).."p "..target)
    --os.execute("echo '"..tmp.."'")
    local handle = io.popen(tmp)
    pn = handle:read("*a")
    handle:close()

    tmp=("sed -n "..(ct-0).."p "..target)
    --os.execute("echo '"..tmp.."'")
    local handle = io.popen(tmp)
    cn = handle:read("*a")
    handle:close()

    os.execute("echo "..(string.format("%.0f",cn+pn)).." >>"..target)
end

1 个答案:

答案 0 :(得分:2)

您正在对您的收藏进行分组,因此您不再拥有IQueryable<TEntity>,而是IQueryable<IGrouping<TType, TEntity>>。您需要更新selectorderBy类型,以正确反映您正在做的事情。这是一个有效的例子:

public class Thing<TEntity>
{
    public IQueryable<TEntity> EntitySet = new TEntity[0].AsQueryable();
    public List<T> FilterPagerGroup<T, TType>(
        Expression<Func<TEntity, bool>> where,
        Expression<Func<IGrouping<TType, TEntity>, T>> select, int skip, int take,
        Expression<Func<IGrouping<TType, TEntity>, TType>> orderBy,
        Expression<Func<TEntity, TType>> groupBy)
    {
        List<T> result;

        result = EntitySet.Where(where).GroupBy(groupBy).OrderBy(orderBy).Skip(skip).Take(take).Select(select).ToList();

        return result;
    }
}

请注意,此方法的调用者也需要更新才能在IGrouping<TType, TEntity>上运行,而不仅仅是TEntity