2010-04-19 109 views
1
public class Mailing 
{ 
    public string To { get; set; } 
    public string AttachmentPath { get; set; } 
    public int AttachmentCount { get; set; } 
} 

給這個結構,我有一個IList<Mailing> mailingList其中To具有的DUP和AttachmentPath是每個獨特。Linq的分組查詢

我需要發送郵件到郵件列表,其中每個唯一To有多個附件(即AttachmentPath s)。

這部分工作 - 我可以得到附件計數和迭代和添加附件,因爲我需要但我認爲這是醜陋的。我還需要限制每組附件中的一封電子郵件,其中下面的內容完全中斷。

var investorMailings = (from m in mailingList 
         group m by new 
           { 
            m.GroupBy, 
            m.To 
           } 
          into g 
          select new DistintInvestorMailing 
           { 
            To = g.Key.To, 
            AttachmentCount = g.Count() 
           }).ToList(); 

有什麼想法?

+0

什麼是'm.GroupBy'? – 2010-04-19 19:23:53

+0

請忽略m.GroupBy。我忘了把它留下了,請在這個例子中忽略m.GroupBy。 – CurlyFro 2010-04-19 19:30:48

回答

2
var groupedMailings = mailingList.GroupBy(g => g.To); 
var investorMailings = groupedMailings.Select(
    g => new 
    { 
     To = g.Key, 
     Attachments = g.Select(k => k.AttachmentPath), 
     Count = g.Sum(j => j.AttachmentCount) 
    } 
); 

應該產生一個IEnumerable annonymous類型具有以下屬性:

  • 。要地址發送給
  • .Count之間附件的號碼發送
  • 。附件 IEnumerable字符串引用AttachmentPath的

注:是的,這可變成1頁LINQ的聲明,但我把它弄壞了分爲兩個爲清楚起見,

+0

很酷 - 謝謝 – CurlyFro 2010-04-19 20:09:07