![](/img/trans.png)
[英]LINQ Group by error: “does not contain a definition for '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.