簡體   English   中英

不包含GroupBy的定義

[英]Does Not Contain Definition for GroupBy

public struct CardGrouping
    {
        public string Name { get; set; }
        public int Count { get; set; }
    }

    public List<CardGrouping> GetCardGrouping(IQueryable<Areas.RetailShop.Models.FPSinformation> queryable, Expression<Func<Areas.RetailShop.Models.FPSinformation, string>> groupingFunction)
    {
        return queryable.GroupBy(groupingFunction)
                .Where(x => x.Key != null)
                .Select(x => new CardGrouping
                {
                    Name = x.Key,
                    Count = x.Sum(groupingFunction)
                }).ToList();
    }

我正在嘗試做這樣的事情,但出現錯誤

IQueryable<FPSinformation>不包含'GroupBy'的定義,並且最佳擴展方法重載ParallelEnumerable.GroupBy<string, int>(ParallelQuery<string>, Func<string, int>)需要類型為ParallelQuery<string>的接收器

我做錯了什么?

編輯

var data1 = fpslist.GroupBy(x => x.Ration_Card_Type1)
                .Select(x => new
                {
                    CardType_Name = x.Key,
                    CardType_Count = x.Sum(y => y.Ration_Card_Count1)
                }).ToList();

這是我要優化的實際代碼

有趣地將字符串更改為Areas.RetailShop.Models.FPSinformation

public List<CardGrouping> GetCardGrouping(List<Areas.RetailShop.Models.FPSinformation> queryable,
        Expression<Func<Areas.RetailShop.Models.FPSinformation, string>> groupingFunction,
        Func<Areas.RetailShop.Models.FPSinformation, int> sumFunction)

    {


        if (queryable.AsQueryable() != null)
        {

            var data = queryable.AsQueryable().GroupBy(groupingFunction).Where(x => x.Key != null).Select(x => new CardGrouping
            {
                Name = x.Key == null ? "" : x.Key.ToString(),
                Count = x.Sum(sumFunction)
            }).ToList();
            return data;
        }
        return null;
    }

此代碼有2個問題。

首先,要使其編譯, groupingFunction應該是Func<FPSinformation, int> -輸入的類型不是string ,而是FPSinformation

此更改將使其進行編譯,但是編譯器將選擇Enumerable.GroupBy擴展方法。 所述Queryable.GroupBy需要Expression<Func>參數,而不是一個Func -所以應該Expression<Func<FPSinformation, int>>

public List<CardGrouping> GetCardGrouping(IQueryable<FPSinformation> queryable, 
                             Expression<Func<FPSinformation, int>> groupingFunction)

您將其按int分組,因此.Where(x => x.Key != null)沒有意義x.Key不能為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM