2010-04-19 81 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