簡體   English   中英

IGrouping不包含以下定義

[英]IGrouping does not contain a definition for

我一直在這里查看其他線程,以了解如何在linq中執行GroupBy。 我正在使用對其他人有用的EXACT語法,但是,它不起作用。

這是查詢:

var results = from p in pending
              group p by p.ContactID into g
              let amount = g.Sum(s => s.Amount)
              select new PaymentItemModel
              {
                  ContactID = g.ContactID, // <--- Error here
                  Amount = amount
              };

pending是一個List<T> ,其中除其他列外還包含ContactIDAmount ,但這是我對此查詢僅關心的兩個。

麻煩的是,在select newg. 不會給我原始列表內的任何列, pending 當我嘗試時,我得到:

IGrouping <int, LeadPurchases>不包含ContactID的定義,也沒有擴展方法等等……

這是我要模擬的SQL:

SELECT 
    lp.PurchasedFromContactID, 
    SUM (lp.Amount) 
FROM 
    LeadPurchases lp
GROUP BY 
    lp.PurchasedFromContactID

您是根據ContactID進行分組的,因此它應該是結果的鍵,因此您必須使用g.Key而不是g.ContactID 這意味着查詢應類似於以下內容:

from p in pending
              group p by p.ContactID into g
              let amount = g.Sum(s => s.Amount)
              select new PaymentItemModel
              {
                  ContactID = g.Key,
                  Amount = amount
              };

更新 :

如果要基於多個列進行分組,則GroupBy子句將如下所示:

group p by new
{
    p.ContactID,
    p.Field2,
    p.Field3
}into g
select new PaymentItemModel()
{
    ContactID = g.Key.ContactID,
    anotherField = g.Key.Field2,
    nextField = g.Key.Field3       
};

暫無
暫無

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

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